【问题标题】:why my @autowired doesn't work为什么我的@autowired 不起作用
【发布时间】:2012-07-12 16:50:45
【问题描述】:

最近我在尝试启动现有服务器时遇到了问题。似乎 ABCManager 字段之一没有被 spring bean factory 自动装配。这已添加到配置文件中 - “context:annotation-config”。 我检查了代码更改版本,ABCManager 只有一个私有构造函数方法(在它有一个 getInstance 方法之前)。这有关系吗? Spring 是否会使用私有构造函数为我获取实例,或者这就是我得到 NPE 的原因? 如果不是这样,我还应该检查什么?

【问题讨论】:

  • 您能否添加您的应用程序配置和您获得的异常并将其发布在您的问题中?
  • 在调试了这个问题之后,我终于明白了那里发生了什么。这仍然是一个配置问题,某些依赖 bean 没有在 *.xml 中配置。

标签: spring


【解决方案1】:

你的班级有注释吗? 您的课程必须使用@Component@Service@Repository 进行注释

【讨论】:

    【解决方案2】:

    由于这是使用静态方法获取实例,Spring 默认不知道它。 您必须在 bean 减速中指定您的静态方法。

    <bean id="exampleBean" class="examples.ExampleBean2" factory-method="createInstance"/>
    

    您的工厂方法将是您用于实例化此 bean 的静态方法。

    【讨论】:

    • 不,我调试代码发现即使你没有提供公共构造函数,spring 仍然为我生成一个实例。所以如果你不提供工厂方法,那也没关系。
    猜你喜欢
    • 1970-01-01
    • 2017-09-25
    • 2016-08-21
    • 2022-08-04
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2015-09-25
    相关资源
    最近更新 更多