springboot配置——@PropertySource,@ImportResource,配置文件的占位符

1.properties配置文件乱码问题

在设置中,搜File Encodings设置一下就OK了
springboot配置——@PropertySource,@ImportResource,配置文件的占位符_第1张图片

2.使用@ConfigurationProperties(prefix = “person”)默认从全局配置文件中获取值,而 使用@PropertySource(value={})注解获取指定配置文件中的值 其中vlaue是数组,可以放多个配置文件 同时需要加上@ConfigurationProperties(prefix = “person”)

@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String name;
    private int age;
    private String kind;
    private String email;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getKind() {
        return kind;
    }

    public void setKind(String kind) {
        this.kind = kind;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", kind='" + kind + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}
person.properties配置文件:

person.name=小狗子
person.age=12
person.kind= 狗
[email protected]

3.使用注解@ImportResource(locations = {“classpath:beans.xml”})把spring配置文件中的bean注入容器中

@ImportResource加在主配置类上面

@ImportResource(locations = {"classpath:beans.xml"})
@SpringBootApplication
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }

}

在beans.xml中
  

创建一个com.fhxy.springboot_demo.service.HelloService类

在测试类中

    @Autowired
    ApplicationContext ioc;
    @Test
    public void testXml(){
        boolean b = ioc.containsBean("helloService");
        System.out.println(b);
    }
    输出为true就表明容器中存在这个bean

在springboot中不推荐使用这种方式,推荐使用全注解
使用@Configuration注解来标注配置类
使用@Bean标注方法, 将方法的返回值添加到容器,默认的id是方法名,可以用value来指定bean的id,可以指定多个id,通过value指定id后,默认的id将不起作用

//@Configuration标注一个配置类,代替spring配置文件
@Configuration
public class MyConfig {

    //@Bean 将方法的返回值添加到容器,默认的id是方法名,可以用value来指定bean的id,可以指定多个id,通过value指定id后,默认的id将不起作用
    @Bean(value = {"xiaobai","xiaohei","xiaohuang"})
    public HelloService helloService(){

        System.out.println("给容器中添加组件了·········");
        return new HelloService();
    }
}

4.配置文件的占位符

这是yaml配置文件
person:
  name: 狗子${random.uuid}	——》在狗子后面追加一串随机uuid
  age: 12
  kind: ${person.add:hello}_狗	——》在狗前面加上person的add值,如果add没有值或者没有add属性,就显示hello_狗
  email: [email protected]_${person.age}	——》加了个_占位符,效果跟第一个没啥区别

你可能感兴趣的:(springboot技术)