java - Spring - Autowiring 字段为空

标签 java spring dependency-injection inversion-of-control autowired

我遇到了 Spring 框架的问题:@Autowired都是null,但是Spring没有抛出任何异常,我不明白,为什么这些字段是null。

我有一个类:

package com.processing.gates;

public class Main {

    private final ApplicationContext context = Context.getContext();

    @Autowired private PaymentGateFactory paymentGateFactory;
    @Autowired private CalculatorChooser calculatorChooser;

    //...
}

例如,我有以下类(class):

package com.processing.gates.comission;

@Component
public class CalculatorChooser {
    //...
}

这是我的 Spring 配置 xml:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/jdbc 
        http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">

    <context:annotation-config />
    <context:component-scan base-package="com.processing.gates"/>


    <bean id="logPath" class="java.lang.String"> <!-- путь к папке с логами -->
        <constructor-arg value="/home/yoba/NetBeansProjects/processing/gates/log/"/>
    </bean>
    <!-- ... -->
</beans>

当我尝试用 xml 编写时:

<bean id="calculator" class="com.processing.gates.comission.CalculatorChooser"/>

并从代码中获取它:

CalculatorChooser cc = (CalculatorChooser)Context.getContext().getBean("calculator");

效果很好。但@Autowired 不起作用。我怎样才能解决这个问题?谢谢!

最佳答案

让 Spring 通过在应用程序上下文文件中声明 Main bean 或使用 @Component 注释来管理 bean,就像您对 所做的那样计算器选择器

<bean id="mainBean" class="com.processing.gates.Main"/>

关于java - Spring - Autowiring 字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30279039/

相关文章:

java - 为 gRPC ServerInterceptors 设置执行顺序

c# - 无法使用 Simple Injector 注册 Api Controller?

ios - Swinject 的循环依赖问题

java - 从 jcombobox 获取数据并将其转换为 float

java - 使用 Spring MVC 无法同时正确打印 ArrayList 和 HTML 中的表单

java - 两个日期之间的所有日期输出错误

android - Roboguice 2.0 @Inject 单例到 POJO

java - 使用 gradle bootJar 而不是 jar 任务并且在 Jenkins 中构建失败

java - 如何从 Java 类进行 SOAP Web 服务调用?

java - 使用 H2 的永久数据库