spring自动装配ByName问题

lyfree 发布于 2013/11/27 12:40
阅读 765
收藏 0

下面是我的代码

Boss.java(bean类)


public class Boss {
	@Resource
	private Car car;
	@Resource
    private Office office;

    @Override
    public String toString() {
        return "car:" + car + "\n" + "office:" + office;
    }
}


xml配置如下

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
	
	<!-- 移除 boss Bean 的属性注入配置的信息 -->
	<bean id="boss" class="com.gjy.testautowired.Boss" />
	
	
	<bean id="o1" class="com.gjy.testautowired.Office">
		<property name="officeNo" value="001" />
	</bean>
	<bean id="c1" class="com.gjy.testautowired.Car" scope="singleton">
		<property name="brand" value=" 红旗 CA72" />
		<property name="price" value="2000" />
	</bean>



测试代码如下:

public void test_with_autowired() {
		ApplicationContext ac = new ClassPathXmlApplicationContext("testautowired.xml");
		Boss bs = (Boss) ac.getBean("boss");
		System.out.println(bs);
	}



输出为:

car:brand: 红旗 CA72,price:2000.0
office:officeNo:001

我想知道@Resource是通过byName注入的,但是我的xml中并没有id="car"和id="office"的配置,为什么还是注入成功了!难道通过bytype注入了。这里有些不懂,求指教


加载中
0
光石头
光石头
@Resource 默认是byName,如果没有找到 就会byType,还是找不到就抛错了
0
时间在追我
时间在追我

引用来自“屁屁果”的答案

@Resource 默认是byName,如果没有找到 就会byType,还是找不到就抛错了
+1
0
lyfree
lyfree
哦!原来是这样啊!谢谢了
返回顶部
顶部