深入理解Spring Cloud与微服务构建(第2版)
上QQ阅读APP看书,第一时间看更新

4.3.3 自定义配置文件

上面介绍了如何把配置属性写到application.yml配置文件中,并把配置属性读取到一个配置类中。有时属性太多,把所有的配置属性都写到application.yml配置文件中不太合适,这时需要自定义配置文件。例如在src/main/resources目录下自定义一个test.properties配置文件,其配置信息如下:

com.forezp.name=forezp
com.forezp.age=12

如何将这个配置文件test.properties的属性和属性值赋给一个JavaBean呢?需要在类名上加@Configuration、@PropertySource和@ConfigurationProperties这3个注解。需要注意的是,若Spring Boot版本为1.4或1.4之前,则需要在@PropertySource注解上加location,并指明该配置文件的路径。本案例采用的Spring Boot版本为2.1.0,代码如下:

@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.forezp")
public class User {
   private String name;
   private int age;
   …//省略了getter 、setter
}

写一个LucyController的类,在类的上方加上@RestController注解,开启RestController的功能;加上@EnableConfigurationProperties注解,并指明需要引用的JavaBean的类,开启引用配置属性的功能,其代码清单如下:

@RestController
@EnableConfigurationProperties({ConfigBean.class,User.class})
public class LucyController {
   @Autowired
   User user;
   @RequestMapping(value = "/user")
   public String user(){
      return user.getName()+”:”+user.getAge();
   }
}

启动工程,在浏览器上访问“http://localhost:8080/user”。浏览器会显示“forezp:12 ”,这说明自定义配置文件的属性被读取到了JavaBean中。