Spring DI 在 4.2.x 中失败但在 4.3.x 中成功
Spring DI fails in 4.2.x but succeed in 4.3.x
我正在尝试在基于 spring 的 Web 应用程序中从 Guice Injector 导入 Beans,然后希望在后续创建其他 bean 时注入这些导入的 bean。
我是怎么做到的:
我正在尝试将 guice Injector 注册为 bean。然后使用 getInstance 将基于 guice 的项目中的其他 bean 注册为我项目中的 bean。
在我的 java 配置中:
@Bean
public Injector getInjector() {
return Guice.getInjector();
}
@Bean
@Inject
public ABC aBC(Injector injector) {
return injector.getInstance(ABC.class);
}
然后我的实现之一是
public class XYZ {
@Inject
XYZ (final ABC abc) {
}
当我使用 Spring 4.3.x 时这有效,但是 4.2.x 失败给出错误 No default constructor found。
4.3.x 和 4.2.x 之间有什么区别吗 我也想使用 4.2.x 只是出于某些原因。
4.3 中更改了构造函数注入,请参阅 https://spring.io/blog/2016/03/04/core-container-refinements-in-spring-framework-4-3#implicit-constructor-injection-for-single-constructor-scenarios
您可以尝试使用 Autowired 而不是 Inject
public class XYZ {
@Autowired
XYZ (final ABC abc) {
}
我正在尝试在基于 spring 的 Web 应用程序中从 Guice Injector 导入 Beans,然后希望在后续创建其他 bean 时注入这些导入的 bean。 我是怎么做到的: 我正在尝试将 guice Injector 注册为 bean。然后使用 getInstance 将基于 guice 的项目中的其他 bean 注册为我项目中的 bean。 在我的 java 配置中:
@Bean
public Injector getInjector() {
return Guice.getInjector();
}
@Bean
@Inject
public ABC aBC(Injector injector) {
return injector.getInstance(ABC.class);
}
然后我的实现之一是
public class XYZ {
@Inject
XYZ (final ABC abc) {
}
当我使用 Spring 4.3.x 时这有效,但是 4.2.x 失败给出错误 No default constructor found。 4.3.x 和 4.2.x 之间有什么区别吗 我也想使用 4.2.x 只是出于某些原因。
4.3 中更改了构造函数注入,请参阅 https://spring.io/blog/2016/03/04/core-container-refinements-in-spring-framework-4-3#implicit-constructor-injection-for-single-constructor-scenarios
您可以尝试使用 Autowired 而不是 Inject
public class XYZ {
@Autowired
XYZ (final ABC abc) {
}