全局组件初始化
对于组件的全局的初始化,可以使用前面所说的ImportBeanDefinitionRegistrar
这个方法来指定初始化方法,以开源的队列QMQ的源码为例:
@EnableQmq实现方式
代码语言:javascript复制@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(QmqConsumerRegister.class)
public @interface EnableQmq {
String appCode();
String metaServer();
}
其中QmqConsumerRegister
实现代码如下
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
...
}
Spring在扫描包的时候,会自动的运行registerBeanDefinitions中的方法,实现组件初始化。
单实体使用
利用bean的生命周期可以优雅的实现,其中 @PostConstruct和@PreDestroy写法更容易,也比较好控制,缺点就是需要找到的对应的入口,对于源码阅读不是很友好。
(本文完)
作者:付威 博客地址:http://blog.laofu.online 如有任何知识产权、版权问题或理论错误,还请指正。 本文是付威的网络博客原创,自由转载-非商用-非衍生-保持署名,请遵循:创意共享3.0许可证