使用@PropertySource加载配置文件

285 阅读2分钟

使用@PropertySource加载配置文件

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

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

演示:

 (1)打开Spring Boot项目的resources目录,在项目的类路径下新建一个test.properties自定义配置文件,在该配置文件中编写需要设置的配置属性
#对实体类对象MyProperties进行属性配置
test.id=110
test.name=test
(2)在com.lagou.pojo包下新创建一个配置类MyProperties,提供test.properties自定义配置文件中对应的属性,并根据@PropertySource注解的使用进行相关配置  
 	@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)进行测试

  @Autowired
  private MyProperties myProperties;
  @Test
  public void myPropertiesTest() {
    System.out.println(myProperties);
  }

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