InitializingBean
2019-09-28 本文已影响0人
不二不二熊
一、起源
很多时候,我们在配置文件初始化完毕后都想根据配置文件初始化自己的属性,那么这个时候InitializingBean
就能够起作用了。
二、展示
假如我们在配置文件自定义了这样一个属性url
com.imoc.user.url = com.imoc.study,com.imoc.learn
我们想在配置文件初始化完毕后将url按照逗号分隔注入自己的属性中
@ConfigurationProperties(prefix = "com.imoc")
@Data
@Configuration
public class UserConfigition {
private MyUser user;
}
@Data
public class MyUser {
private String url;
}
我们可以实现InitializingBean
接口的afterPropertiesSet,在方法体内部编写具体的逻辑。如下所示,可以在UserConfigition
注入完毕后,调用afterPropertiesSet
方法将url切割并且注入到自定义的urls中,这样当项目启动后,urls就会有值啦~
@RestController
@RequestMapping("/init")
public class ParmeatTest implements InitializingBean {
@Autowired
private UserConfigition userConfigition;
private String[] urls;
@GetMapping("/initTest")
public void InitializingBeanTest(){
System.out.println(urls.toString());
}
@Override
public void afterPropertiesSet() throws Exception {
String[] split = StringUtils.splitByWholeSeparator(userConfigition.getUser().getUrl(), ",");
urls = split;
}
}
三、参考
Spring应用--实现InitializingBean接口
spring-bean模块中InitializingBean接口