配置文件实例

266 阅读2分钟

这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

@ConfigurationProperties

我们写一个配置文件,然后在项目中使用

person:
  lastName: hello
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: 12}
  lists:
    - lisi
    - zhaoliu
    - dd
  Dog:
    name: 111
    age: 22

在实现我们的类,set,get以及toString方法自己生成就可以

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastName;
    private Integer age;
    private boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;

    private Dog dog;
}


public class Dog {
    public String name;
    public Integer age;
}

@Component注解就不用说了,把我们的类注入到Spring中

@ConfigurationProperties(prefix = "person")用来读取我们的yaml文件

这时候我们需要到一个包,用来

编写测试代码

class SpringBootDemoApplicationTests {

    @Autowired
    Person person;

    @Test
    void contextLoads() {

        System.out.println(person);
    }

}

此时!大家可能会有一个问题就是在大家的yaml文件中

这时候我们只需


生成

就可以了

成功运行

@Value

和我们之前从文件中取数据是相同的

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

配置文件yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

数据校验展示

我们需要导入一个jar包

				<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
            <version>2.4.2</version>
        </dependency>

@PropertySource

这个标签是用来加载指定的配置文件;将配置文件中配置的每一个属性的值,映射到这个组件中@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;

prefix = "person":配置文件中哪个下面的所有属性进行一一映射;只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;

@ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值;

\

我们创建一个person.properties配置文件

person.last-name=里斯
person.age=11
person.birth=2021/11/5
person.boss=true
person.maps.k1=va1
person.maps.k2=vas
person.lists=a,b,c
person.Dog.age=1
person.Dog.name=dd

写好相应的路径,测试代码可以输出相应的值

@ImportResource

导入Spring的配置文件,让配置文件里面的内容生效;

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;

想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

我们编写Spring配置文件,需要将Spring配置文件导入到项目当中使用;

我们也可以使用配置类的方式(使用@Configuration标签)

创建一个配置类

@Configuration
public class MyAppConfig {

    @Bean
    public HelloService helloService(){
        return new HelloService();
    }
}