今天碰到一个Spring的自动装配问题,关于Struts2和Spring3.0的集成。在网上搜到一篇文章:

http://aeqopq231.blog.stcn.com/archives/2012/407199.html

该文章指出使用autodect来解决,实际上这是错误的。autodect代表在bean寻找的方式上使用type或者constructor的方式来查找bean,因此不是这个问题。经过我的调试,我发现问题出现在beans的头声明上:

我原来的声明方式是:


<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"  default-autowire="byName">

 

应更改为:


<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">

 

该设置除了开头的applictaion.xml不是这么配置外,其他关于spring的配置文件均如此,这样default-autowire="byName"的装配方式才会在struts2+spring3中真正起效!