【问题标题】:Spring DI fails in 4.2.x but succeed in 4.3.xSpring DI 在 4.2.x 中失败,但在 4.3.x 中成功
【发布时间】:2016-10-31 14:34:35
【问题描述】:

我正在尝试在基于 Spring 的 Web 应用程序中从 Guice Injector 导入 Bean,然后希望在随后创建其他 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 失败给出错误没有找到默认构造函数。 4.3.x 和 4.2.x 有什么区别吗?我也想用 4.2.x 只是因为某些原因。

【问题讨论】:

    标签: spring spring-mvc dependency-injection guice spring-java-config


    【解决方案1】:

    在 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) {
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 2018-10-21
      • 1970-01-01
      • 2020-03-30
      • 2013-06-23
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多