Java @春天的资源不工作?

Java @春天的资源不工作?,java,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框架的新手,我尝试了以下示例:

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

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" />
[..]

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

您很好地用XML定义了所有3个bean

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

这将处理
@Resource

您可以简单地将其定义为bean:

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

或者,您可以使用:

<context:annotation-config>


您是否在xml中编写了要扫描的包<代码>我认为在课堂上你应该使用
@Autowired
而不是
@Resource
,那应该是
<context:annotation-config>