今天碰到一個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中真正起效!