我遇到了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不起作用。 我怎样才能解决这个问题? 谢谢!

===============>>#1 票数:2 已采纳

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

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

  ask by another-programmer translate from so

未解决问题?本站智能推荐:

1回复

是否可以在Spring中在运行时自动装配方法参数

是否可以在运行时使用Spring中的注释将新的原型范围bean实例注入Controller的方法参数? 因此,无论何时调用该方法,Spring都会将限定bean作为其参数注入,因为它会注入@ModelAttribute。 据我所知,@Autowired字段只在创建上下文时注入一次。 从上下
2回复

请解释一下我在Spring中通过构造函数进行自动装配的这种(模糊性)行为

我首先提供小代码片段,然后我会要求解释。 ============================================== ============================================== OUTPUT: 调用参数化构造函数
1回复

在带有用于套接字的构造函数的情况下自动装配

我的主要代码 而我的启动方法 但是我希望PortService对象是从Spring创建的,而不是直接创建的,因为它具有用于通信的db类。 我该怎么做。
2回复

如何在使用弹簧自动接线时传递构造函数参数?

我们的项目使用的是弹簧DI / IoC,所以我使用自动装配来注入豆子。 程序需要在实例化过程中将参数传递给对象。 并且在运行时(不是在编译时)知道参数。 如何在使用自动装配时实现此目的。 示例代码如下。 接口 - IMessage 实施 - SayHelloServ
5回复

Spring 3.2 @Autowired的默认设置

Spring 3.2的默认自动装配方法是什么? 所以说我有这堂课 它执行byName还是执行byType?
1回复

春季:如何在一个弹簧容器中处理原型豆,该容器的对象范围是对象图的某个子部分?

我认为这是一个琐碎的问题,但是我找不到任何讨论。 我有DeeplyNestedObject其对象图应通过注入Dependency自动装配。 在此对象图中, Dependency应为单例作用域。 由于我只需要Dependency可以自动装配SomeOtherObject ,从而自动装
2回复

春季自动接线的优点是什么

Spring的自动装配的确切优势是什么? 春天自动布线的一个例子是 test.xml 正常操作中的相同操作可以使用以下命令完成: Spring的优势是什么,我的意思是我听说过术语控制反转和依赖注入。 在这两个示例中,TestClass的引用通过Spring XML
5回复

Spring bean注入一个main方法类

我有一个带有spring 3.0的Web应用程序。 我需要使用来自cron的main方法运行一个类,该cron使用appcontext xml中定义的bean(使用组件扫描annocations)。 我的主类在同一个src目录中。 如何从Web上下文中将bean注入main方法。 我试着
1回复

如何在Spring中获取@Configuration文件以运行

我正在使用依赖项注入编写微服务,并且我有一个用@Configuration注释的Java类,该类创建了我的所有bean。 但是,我的自动装配字段没有检测到bean。 如何在应用程序启动之前让@Configuration类运行? 我尝试用@ContextConfiguration(cla
1回复

Spring多个@Configuration组件扫描歧义

当使用多个@Configuration文件时,我注意到组件扫描和bean创建方面的歧义。 假设我具有方法级安全性的配置,该配置需要扫描包含需要AOP代理的类的包。 这些类依赖于其他类,并且也依赖于其他类。 一切正常,直到我以不同的配置(例如,根配置)扫描相同的软件包。 然后,诸如