在Spring XML配置中使用@PostConstruct
注解和声明与init-method
相同的方法有什么区别吗?
最佳答案
实际上,我认为没有任何区别,但它们的工作方式有优先级。 @PostConstruct
、init-method
是 BeanPostProcessors。
@PostConstruct
是 JSR-250 注释,而init-method
是 Spring 拥有初始化方法的方式。- 如果您有
@PostConstruct
方法,则会在调用初始化方法之前首先调用它。 - 如果您的 bean 实现 InitializingBean 并覆盖
afterPropertiesSet
,则首先调用@PostConstruct
,然后调用afterPropertiesSet
,然后调用init-method
.
有关更多信息,您可以查看 Spring 的 reference documentation .
在 JSR 250 规范之前,在 xml 中使用 init-method 是首选方式,因为它将 java 类(bean)与任何 spring 特定类/注释分离。因此,如果您正在构建一个不需要依赖的库spring 基础设施 bean 则首选使用 init-method。在创建方法期间,您可以指定需要调用的方法作为初始化方法。
现在随着 Java EE 中 JSR 250 规范的引入以及 spring 对这些注解的支持,在一定程度上减少了对 spring 框架的依赖。
但我不得不承认,添加这些东西会增加代码的可读性。所以这两种方法各有利弊。
关于Spring @PostConstruct 与 init-method 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519187/