上QQ阅读APP看书,第一时间看更新
4.3.2 将配置文件的属性赋给实体类
当有很多配置属性时,如果逐个地读取属性会非常麻烦。通常的做法会把这些属性名作为变量名来创建一个JavaBean的变量,并将属性值赋给JavaBean变量的值。
在配置文件application.yml中添加如下属性:
my: name: forezp age: 12 number: ${random.int} uuid : ${random.uuid} max: ${random.int(10)} value: ${random.value} greeting: hi,i'm ${my.name}
其中,配置文件中用到了${random},它可以用来生成各种不同类型的随机值。random.int随机生成一个int类型的值,random.uuid随机生成一个uuid,random.value随机生成一个值,random.int(10)随机生成一个小于10的整数。
怎么将这些属性赋给一个JavaBean呢?创建一个JavaBean,其代码清单如下:
@ConfigurationProperties(prefix = "my") @Component public class ConfigBean { private String name; private int age; private int number; private String uuid; private int max; private String value; private String greeting; …//省略了getter setter }
在上面的代码中,在ConfigBean类上加一个注解@ConfigurationProperties,表明该类为配置属性类,并加上配置的prefix,例如本案例的“my”。另外需要在ConfigBean类上加@Component注解,Spring Boot在启动时通过包扫描将该类作为一个Bean注入IoC容器中。
创建一个Controller,读取ConfigBean类的属性。在Controller类上,加@EnableConfigurationProperties注解,并指明ConfigBean类,其代码清单如下:
@RestController @EnableConfigurationProperties({ConfigBean.class}) public class LucyController { @Autowired ConfigBean configBean; @RequestMapping(value = "/lucy") public String miya(){ return configBean.getGreeting()+"-"+configBean.getName()+"-"+ configBean.getUuid()+ "-"+configBean.getMax(); } }
启动Spring Boot工程,在浏览器上访问“http://localhost:8080/lucy”,浏览器会显示从配置文件读取的属性。