关于java:Bean初始化操作initMethodPostConstruct和InitializingBean

57次阅读

共计 1746 个字符,预计需要花费 5 分钟才能阅读完成。

我最新最全的文章都在 南瓜慢说 www.pkslow.com,欢送大家来喝茶!

1 简介

很多工夫当一个 Bean 被创立进去后,咱们心愿做一些初始化操作,如初始化数据、缓存预热等。有以下三种办法:

  • 初始化办法initMethod
  • 注解@PostConstruct
  • InitializingBeanafterPropertiesSet 办法

2 三种办法实现

先筹备一个类用于测试,代码如下:

public class BeanLifeCheck implements InitializingBean {private static final Logger logger = LoggerFactory.getLogger(BeanLifeCheck.class);

    @Value("${spring.application.name}")
    private String applicationName;

    public BeanLifeCheck() {logger.info("BeanLifeCheck: Construct" + applicationName);
    }

    public void initMethod() {logger.info("BeanLifeCheck: initMethod" + applicationName);
    }

    @PostConstruct
    public void postConstruct() {logger.info("BeanLifeCheck: postConstruct" + applicationName);
    }

    @PreDestroy
    public void preDestroy() {logger.info("BeanLifeCheck: preDestroy" + applicationName);
    }

    @Override
    public void afterPropertiesSet() throws Exception {logger.info("BeanLifeCheck: afterPropertiesSet" + applicationName);
    }
}

2.1 初始化办法 initMethod

这个以前是通过 xml 配置文件来定义的,当初能够间接定义在 @Bean 注解上,如下:

@Bean(initMethod = "initMethod")
public BeanLifeCheck beanLifeCheck() {return new BeanLifeCheck();
}

2.2 注解 @PostConstruct

间接在办法上加注解即可:

@PostConstruct
public void postConstruct() {logger.info("BeanLifeCheck: postConstruct" + applicationName);
}

2.3 InitializingBean 的 afterPropertiesSet 办法

须要类实现接口InitializingBean,如下:

@Override
public void afterPropertiesSet() throws Exception {logger.info("BeanLifeCheck: afterPropertiesSet" + applicationName);
}

3 总结

运行后的执行日志及程序如下:

2021-02-06 17:44:52.377: BeanLifeCheck: Construct null
2021-02-06 17:44:52.379: BeanLifeCheck: postConstruct Springboot-Common
2021-02-06 17:44:52.379: BeanLifeCheck: afterPropertiesSet Springboot-Common
2021-02-06 17:44:52.379: BeanLifeCheck: initMethod Springboot-Common
2021-02-06 17:45:10.347: BeanLifeCheck: preDestroy Springboot-Common

三种办法感觉区别不大,用哪个就看习惯了。

代码请查看:https://github.com/LarryDpk/p…


欢送关注微信公众号 <南瓜慢说>,将继续为你更新 …

多读书,多分享;多写作,多整顿。

正文完
 0