乐趣区

自定义配置

1.7 自定义配置

​ spring Boot 免除了项目中大部分的手动配置,对于一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在 application.peroperties 文件中,Spring Boot 会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义配置文件,Spring Boot 是无法识别这些配置文件的,此时就需要我们手动加载。接下来,将针对 Spring Boot 的自定义配置文件及其加载方式进行讲解

1.7.1 使用 @PropertySource 加载配置文件

​ 对于这种加载自定义配置文件的需求,可以使用 @PropertySource 注解结合 @Configuration 注解配置类的方式来实现。@PropertySource 注解用于指定自定义配置文件的具体位置和名称。同时,为了保证 Spring Boot 能够扫描该注解,还需要类上添加 @Configuration 注解将实体类作为自定义配置类。

当然,如果需要将自定义配置文件中的属性值注入到对应类的属性中,可以使用 @ConfigurationProperties 或者 @Value 注解进行属性值注入

演示:

​(1)打开 Spring Boot 项目的 resources 目录,在项目的类路径下新建一个 test.properties 自定义配置文件,在该配置文件中编写需要设置的配置属性

properties

对实体类对象 MyProperties 进行属性配置

test.id=110

test.name=test

​(2)在 com.lagou.pojo 包下新创建一个配置类 MyProperties,提供 test.properties 自定义配置文件中对应的属性,并根据 @PropertySource 注解的使用进行相关配置

java

@Configuration // 自定义配置类

@PropertySource(“classpath:test.properties”) // 指定自定义配置文件位置和名称

@EnableConfigurationProperties(MyProperties.class) // 开启对应配置类的属性注入功能

@ConfigurationProperties(prefix = “test”) // 指定配置文件注入属性前缀

public class MyProperties {

private int id;

private String name;

// 省略属性 getXX() 和 setXX() 方法

// 省略 toString() 方法

}

​ 主要是一个自定义配置类,通过相关注解引入了自定义的配置文件,并完成了自定义属性值的注入。针对示例中的几个注解,具体说明如下

@Configuration 注解表示当前类是一个自定义配置类,并添加为 Spring 容器的组件,这里也可以使用传统的 @Component 注解;

@PropertySource(“classpath:test.properties”) 注解指定了自定义配置文件的位置和名称,此示例表示自定义配置文件为 classpath 类路径下的 test.properties 文件;

@ConfigurationProperties(prefix = “test”) 注解将上述自定义配置文件 test.properties 中以 test 开头的属性值注入到该配置类属性中。

如果配置类上使用的是 @Component 注解而非 @Configuration 注解,那么 @EnableConfigurationProperties 注解还可以省略

(3)进行测试

java

@Autowired

private MyProperties myProperties;

@Test

public void myPropertiesTest() {

System.out.println(myProperties);

}

打印结果:

<img src=”./images/image-20191225162728286.png” alt=”image-20191225162728286″ style=”zoom:80%;” />

这些内容,是从拉勾教育的《Java 工程师高薪训练营》里学到的,课程内容非常全面,还有拉勾的内推大厂服务,推荐你也看看。

退出移动版