【问题标题】:Dependency Injection for Plugin Class插件类的依赖注入
【发布时间】:2021-11-23 08:15:42
【问题描述】:
我在 jar 文件中有一个类,例如
Class A {
B b;
C c;
//setter based injection
}
现在我想在另一个项目中创建一个 A 的 bean。但是我没有任何主类来配置 Spring 应用程序。我的 pom.xml 中有一个插件,它在我的项目中调用 D 类。
如果我使用 new 关键字创建一个 bean,jar 中的所有自动装配的 bean 都将不可用。
请提出任何方法来做到这一点。
注意:这是一个 Spring 应用程序,不是 Spring boot。
【问题讨论】:
标签:
java
spring
spring-framework-beans
【解决方案1】:
为了能够自动装配一个 bean,您需要将该 bean 注册为 Spring 管理的 bean。您可以通过多种方式做到这一点,以下是最简单的方式:
1) @Component 注解
如果你用@Component 注释A,Spring 将创建该类的一个实例并将其注册为 Spring 管理的 bean:
@Component
Class A {
B b;
C c;
//setter based injection
}
2) @Bean 注解
另一种注册 Bean 的方法是使用 Configuration 类和 @Bean 注解:
@Configuration
public class AppConfig {
@Bean
public A a() {
return new A();
}
}
如果我正确理解了您的用例,您将需要使用选项 2)。