手把手教你写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

回到顶部