java - @Resource 在 Spring 中不起作用?

标签 java spring

我是 Spring 框架的新手,我尝试了以下示例:

首先我创建了两个非常简单的类

public class ObjectA {

    @Override
    public String toString() {
        return "I am ObjectA";
    }
}

public class ObjectB {
    @Override
    public String toString() {
        return "I am ObjectB";
    }
}

不,我想使用这个由 Spring 管理的类。 所以我创建了另一个类,它使用 @Resource (javax.annotation.Resource) 注释来连接两个对象。

public class MyApp {

    @Resource
    public ObjectA oa;

    @Resource
    public ObjectB ob;

    public void info() {
        System.out.println("--------------");
        System.out.println(oa);
        System.out.println("--------------");
        System.out.println(ob);
        System.out.println("--------------");

    }

    public static void main( String[] args ) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("mySpringConfig.xml");
        System.out.println(applicationContext.getBean( ObjectA.class ));
        System.out.println(applicationContext.getBean( ObjectB.class ));
        MyApp myApp = applicationContext.getBean( MyApp.class );
        myApp.info();
    }

}

mySpringConfig.xml 包含以下内容:

[..]
<bean id="objectA" class="com.mySpringCompany.ObjectA" />
<bean id="objectb" class="com.mySpringCompany.ObjectB" />
<bean id="myApp" class="com.mySpringCompany.MyApp" />
[..]

现在,当我运行 MyApp 的 Main-Method 时,我得到以下信息:

I am ObjectA
I am ObjectB
--------------
null
--------------
null
--------------

因此,当我在主方法中直接使用 applicationContext.getBean( ObjectA.class ) 时,我得到了 ObjectA 的一个实例。当我想进入 MyApp 对象时,它不起作用。但我认为 Spring 应该在 MyApp 类中注入(inject)这两个对象。我做错了什么?在此先感谢您的帮助。

最佳答案

您在 XML 中定义了所有 3 个 bean 做得很好。

但是还需要通过注解来激活配置,否则@Resource就没有什么可解释的了。 Spring 只有在您指示它时才会这样做。

Bean Post Processor处理 @Resource

你可以简单地将它定义为一个bean:

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>

或者你可以使用这个:

<context:annotation-config>

关于java - @Resource 在 Spring 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28676941/

相关文章:

尝试为类的实例设置成员变量时,Java ArrayList 类抛出异常

java - 在 Android 上针对多种屏幕分辨率时使用的最佳做法

java - mockito 中的 AdditionalAnswers 没有返回好的类型

java - Spring JPA Hibernate 处理大型数据库

java - java 有界泛型与策略模式之间的区别

java - 在 Java 中解析 XML 并忽略标签

spring - 当我尝试使用 JPA EntityGraph 使用 2 个集合加载实体时,MultipleBagFetchException

java - Hibernate:相对于自定义@Transactional(timeout)的默认事务超时

java - Spring:@Component 与 @Bean

java - Java Spring错误创建名称为bean的bean