簡體   English   中英

Spring-自動裝配字段為空

[英]Spring - autowired fields are null

我遇到了Spring Framework的問題: @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;

    //...
}

例如,我有以下課程:

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,就像您對CalculatorChooser所做的那樣

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM