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接口

上一篇下一篇

猜你喜欢

热点阅读