论坛首页 Java版 Spring

Annotation的MVC在@Autowired时遇到问题

浏览 672 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-12-21
由于不使用xml进行配置 完全通过@Autowired
现在的情况是 很多个Controller需要共用一个List 所以将这个List定义在了xml中
类似
<util:list id="haha" list-class="java.util.ArrayList">  
			<value>s</value>
			<value>w</value>
			<value>c</value>
			<value>p</value>
			<value>f</value>
			<value>h</value>
	</util:list>


但是启动的时候抛出异常
Autowiring of fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.util.List xx.xx.Controller.haha
将代码中的
private List<String> haha;
修改成
private ArrayList<String> haha;
并且配置方式改为
<bean id="haha" class="java.util.ArrayList">
    	<constructor-arg>
			<list>
				<value>s</value>
            	<value>w</value>
            	<value>c</value>
            	<value>p</value>
            	<value>f</value>
            	<value>h</value>
        </list>
		</constructor-arg>
    </bean>

结果成功了 why?
   
最后更新时间:2008-01-08
autowired只能自动装配bean,<util:list>配置并不会在spring context中产生一个新的List bean。
后面的用bean的方式是对的,原因就在于你显示声明了一个ArrayList的bean。

而且你在代码中也不必使用ArrayList,直接使用List,然后使用@Qualifier("haha")来使用按bean的名称装配
   
0 请登录后投票
论坛首页 Java版 Spring

跳转论坛:
JavaEye推荐