当前位置:  开发笔记 > Android > 正文

通过Java配置通过CommonAnnotationBeanPostProcessor激活@PostConstruct的正确方法是什么?

如何解决《通过Java配置通过CommonAnnotationBeanPostProcessor激活@PostConstruct的正确方法是什么?》经验,为你挑选了1个好方法。

我正在使用带有SpringBoot的Spring 4和带有Java配置的Spring-Web.

要让@PostConstructSpring在启动时执行带注释的方法,必须注册CommonAnnotationBeanPostProcessor上下文,否则将@PostConstruct被忽略.

在基于XML的Spring配置中,文档说要使用(在beans元素下)


我还看到了一个示例,其中注册是在单个bean的基础上完成的,如下所示:


如果可能,我希望避免这种情况.我的项目不包含任何XML文件,并且在我的构建文件夹中没有为我生成任何文件.

目前,我的解决方案是用我的类来注释@ComponentScan,我认为这会导致Spring检测并注册@Components和@Beans.不知何故,这导致CommonAnnotationBeanPostProcessor被调用,虽然我不知道为什么,但它解决了我的问题!

(这个类有一个@Autowired属性,在启动时为null - 因此需要进行初始化@PostConstruct)

但同样,我的问题是,使用Java配置实现这一目标的正确方法是什么?谢谢!



1> Braj..:

您可以使用InitializingBean作为备用解决方案.

只需扩展此接口并覆盖afterPropertiesSet方法,该方法将在设置bean的所有属性后调用,就像post构造一样.

例如:

@Component
public class MyBean implements InitializingBean 
{
    @Override
    public void afterPropertiesSet()
    {
        // do whatever you want to do here
    }
}


谢谢.有用.这就是我所做的:`code` @Component public class Example实现InitializingBean {@Autowired private MyThing myThing; @Override public void afterPropertiesSet()抛出异常{//在注入后使用myThing.我会留下未回答的问题来收集更多的知识.将在几天内关闭它.
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有