手把手教你写SpringBoot插件02利用ApplicationContextInitializer注入类
1.必须先学会SPI的使用
手把手教你写Spring Boot插件01-SPI规范
2.创建ApplicationContextInitializer字类
利用applicationContext把我们的类注入到Spring 的bean 工厂
主要如果有依赖其他的类,主要要把setLazyInit设置为true,避免循环依赖无法注入
public class EnhancePulg implements ApplicationContextInitializer {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
//注册到bean工厂
DefaultListableBeanFactory configurableListableBeanFactory = (DefaultListableBeanFactory) applicationContext.getBeanFactory();
GenericBeanDefinition JpaSqlAspectBeanDefinition = new GenericBeanDefinition();
JpaSqlAspectBeanDefinition.setBeanClassName("JpaSqlAspect");
JpaSqlAspectBeanDefinition.setBeanClass(JpaSqlAspect.class);
JpaSqlAspectBeanDefinition.setLazyInit(true);
configurableListableBeanFactory.registerBeanDefinition("JpaSqlAspect",JpaSqlAspectBeanDefinition);
GenericBeanDefinition JpaImplBeanDefinition = new GenericBeanDefinition();
JpaImplBeanDefinition.setBeanClassName("JpaImpl");
JpaImplBeanDefinition.setBeanClass(JpaImpl.class);
JpaImplBeanDefinition.setLazyInit(true);
configurableListableBeanFactory.registerBeanDefinition("JpaImpl",JpaImplBeanDefinition);
}
public void get(){
System.out.println("dasdasd");
}
}
JpaSqlAspect 中注入JpaImpl也使用@Lazy让他延迟加载
这样打包好的jar包放到项目的resource文件夹设置好本地应用就可以使用了
我这个项目主要利用AOP对JPA做一个功能性的增强,可以让Data JPA也支持自定义对象查询。
git 地址https://gitee.com/406/SpringEnhanceJPA。欢迎大家指点
以上是 手把手教你写SpringBoot插件02利用ApplicationContextInitializer注入类 的全部内容, 来源链接: utcz.com/z/517706.html