使用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注解跑不起来!这种方法可行不?