我正在使用自定义AbstractProcessor来生成一些类。我试图生成Spring组件A和B,其中B“自动装配”A。输出类类似于:
@Component
public class ClassA {
@Bean
public MyBean getMyBean() {
return new MyBean();
}
}
@Component
public class ClassB {
@Autowired
private ClassA myClassA;
private MyBean myBean;
public ClassB() {
this.myBean = myClassA.getMyBean();
}
}
但是自动连线的myClassA
为空。
我怀疑在对我的班级进行通用训练之前会进行春季扫描。
当我运行mvn clean install
时
...
[INFO] --- spring-boot-maven-plugin:2.0.1.RELEASE:repackage (default) @ main ---
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ main ---
[INFO] Installing C:\Users\me\Documents\kubernetes\spring\testproject2\main\target\main-1.0-SNAPSHOT.jar to C:\Users\me\.m2\repository\be\mycompany\main\1.0-SNAPSHOT\main-1.0-SNAPSHOT.jar
[INFO] Installing C:\Users\me\Documents\kubernetes\spring\testproject2\main\pom.xml to C:\Users\me\.m2\repository\be\mycompany\main\1.0-SNAPSHOT\main-1.0-SNAPSHOT.pom
其中指出spring-boot-maven-plugin
在maven-install-plugin
之前运行。
这是我的“注释处理器”项目中使用的插件配置:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<configuration>
<compilerArgument>-proc:none</compilerArgument>
<includes>
<include>be/mycompany/testproject2/dbgenerator/processing/DatabaseAnnotationProcessor.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>compile-project</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
关于如何确保生成的组件可以自动装配自身的任何提示?
谢谢。
答案 0 :(得分:0)
在这种情况下,您应该使用Class B的构造函数来确保Class A存在:
@Component
public class ClassB {
@Autowired
private ClassA myClassA;
private MyBean myBean;
public ClassB(ClassA myClassA) {
this.myBean = myClassA.getMyBean();
this.myClassA= myClassA;
}
}