use*_*900 10 java spring postconstruct spring-bean java-11
我正在使用 spring 应用程序,有时用于@PostConstruct
代码和测试中的设置
看来注释将被排除在Java 11之外:
请注意,@PostConstruct 和 @PreDestroy 注释都是 Java EE 的一部分。由于 Java EE 已在 Java 9 中弃用并在 Java 11 中删除,我们必须添加额外的依赖项才能使用这些注释
文章建议全部替换@PostConstruct
为afterPropertiesSet
方法
我建议您将 @PostConstruct 注释的实现更改为实现 org.springframework.beans.factory.InitializingBean 接口。
我可以在所有情况下盲目更换它吗?还是有其他考虑?
编辑
正如 @JBNizet 所建议的,这可能不是必须或需要的,因为Spring文档建议相反
我们建议您不要使用 InitializingBean接口,因为它不必要地将代码耦合到 Spring。或者,我们建议使用@PostConstruct注释或指定POJO初始化方法。
编辑2
另一种选择是使用initMethod
:
通过Java配置,可以使用@Bean的initMethod属性
Run Code Online (Sandbox Code Playgroud)@Bean(initMethod = "init") public BeanOne beanOne() { return new BeanOne(); }
弹簧使用jakarta.annotation.PostConstruct
. 作为 的贡献者spring-cloud-kubernetes
,我多次使用过它并将其包含在该项目中。事实上,我们赞成放弃 InitializingBean
。
\n\n与@Resource一样,@PostConstruct和@PreDestroy注释类型是从JDK 6到8的标准Java库的一部分。但是,整个javax.annotation包在JDK 9中与核心Java模块分离,并最终在JDK 11中删除如果需要,现在需要通过 Maven Central 获取 javax.annotation-api 工件,只需像任何其他库一样将其添加到 application\xe2\x80\x99s 类路径中即可。
\n
归档时间: |
|
查看次数: |
15143 次 |
最近记录: |