Spring Boot-配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kikajack/article/details/85542501

Spring Boot 采用的“默认大于配置”的原则,即使没有配置,也可以使用默认配置正常启动应用。

各种格式的配置文件

默认全局配置文件的文件名是 application,常见的有 application.propertiesapplication.yml(YAML 格式)、application.xml(XML 格式),

application.properties 示例:

server.port=8081

application.yml 示例:

server:
  port: 8081

application.xml 示例:

<server>
  <port>8081</port>
</server>

类中引入配置文件

要通过 @ConfigurationProperties 注解使用配置文件,需要先 导入依赖,IDEA 会很智能的在自动导入依赖失败时,弹出 Spring 提示的相关文档信息,根据提示操作即可。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

编写配置文件

server:
  port: 8081

person:
  name: kika
  age: 83
  maps:
    key1: v1
    key2: 2
  lists:
    - zhangsan
    - lisi
    - wangwu
  birth: 2011/01/01
  dog:
    name: dd
    age: 2

编写 Bean 类读取配置文件

@ConfigurationProperties(prefix = "person") 注解将当前类中的所有属性跟配置文件绑定,可以通过参数 prefix 指定前缀。

@Component 注解将当前类添加到 Spring 容器中,从而可以使用容器的各种功能。

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;

    @Override
    public String toString() {
        return "Person{" +
                "name=" + name +
                ", age=" + age +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                "}";
    }
//... getter/setter 方法

编写单元测试

在 /src/test/java/包名 下面,有 XXApplicationTests 测试类。借助测试类,可以方便的注入。

通过这个测试类来检查刚才的配置是否加载成功:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoQuickApplicationTests {

    @Autowired
    Person person; // 自动关联到这个类

    @Test
    public void contextLoads() {
        System.out.println(person); // 测试输出
    }
}

测试文件写完后,右击运行即可执行测试,查看控制台的输出即可。

猜你喜欢

转载自blog.csdn.net/kikajack/article/details/85542501