xml配置与Autowired注解混合

使用xml文件配置Bean,然后不想使用property标签来设置属性值,想使用Autowired注解来注解属性。请问这样可以实现吗?我自己测试了一下发现,一直提示NullPointerException异常。代码如下:

xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">


代码Test.java:

package com.nrdesire.xml;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import javax.annotation.Resource;

class Factory{
public Test test;

public Factory(){
    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:xmd.xml");
    test = (Test) context.getBean("test");
}

}

public class Test {
@Autowired
private CompactDisc cd;
@Autowired
private CDPlayer player;

public static void main(String[] args){
    Factory factory = new Factory();
    factory.test.cd.play();
    factory.test.player.play();
}

}

代码CompactDisc.java:
package com.nrdesire.xml;

public interface CompactDisc {
void play();

}

代码SgtPeppers.java:
package com.nrdesire.xml;

public class SgtPeppers implements CompactDisc {
@Override
public void play() {
System.out.println("shuangge!");
}

}

package com.nrdesire.xml;

import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.Resource;

public class CDPlayer {
@Autowired
private CompactDisc cd;

public void play(){
    cd.play();
}

}

百度了好多都没有相应的资源,这本书后续说的也是java代码配置方式和xml配置方式的混用,唯独没提到过我想的这种情况。
使用xml属性配置然后设置属性的set方法之后可以跑起来。但是去掉xml属性配置和属性set方法而是换成Autowired注解跑不起来!这种方法可行不?

你的Factory类在Spring容器之外。所以在spring容器启动时,Factory里的成员变量Test,没有被赋值;
所以,你需要在审批让配置文件中注入这个Factory,并且设置这个Factory的成员变量Test等于你注入的Test配置的ID;
主要目的就是,把你的所有类都交给spring管

混合注解行得通的,要么spring配置文件里配置相应的bean,要么就需要在@Autowire注解依赖注入的类上添加@Component或@Service注解啊,你这里都没有

首先 你要确认 你的 application.xml中 是否

<context:annotation-config/>
<context:component-scan base-package="com.ecs.controller"/>
<mvc:annotation-driven/>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->