如何學習Spring?
你可以通過下列途徑學習spring() spring下載包中doc目錄下的MVCstepbystep和sample目錄下的例子都是比較好的spring開發的例子
() AppFuse集成了目前最流行的幾個開源輕量級框架或者工具AntXDocletSpringHibernate(iBATIS)JUnitCactusStrutsTestCaseCanoos WebTestStruts MenuDisplay Tag LibraryOSCacheJSTLStruts 你可以通過AppFuse源代碼來學習spring AppFuse網站?page=AppFuse
()Spring 開發指南(夏昕)(_Dev_Guiderar)
一本spring的入門書籍裡面介紹了反轉控制和依賴注射的概念以及spring的bean管理spring的MVCspring和hibernteiBatis的結合
() spring學習的中文論壇SpringFramework中文論壇()
Java視線論壇()的spring欄目
利用Spring框架編程console打印出logjWARN Please initialize the logj system properly?
說明你的logjproperties沒有配置請把logjproperties放到工程的classpath中eclipse的classpath為bin目錄由於編譯後src目錄下的文件會拷貝到bin目錄下所以你可以把logjproperties放到src目錄下
這裡給出一個logjproperties的例子
logjrootLogger=DEBUGstdout logjappenderstdout=orgapachelogjConsoleAppender logjappenderstdoutlayout=orgapachelogjPatternLayout logjappenderstdoutlayoutConversionPattern=%d %p (%F%L) %m%n
出現 javalangNoClassDefFoundError?
一般情況下是由於你沒有把必要的jar包放到lib中
比如你要采用spring和hibernate(帶事務支持的話)你除了springjar外還需要hibernatjaraopalliancejarcgligjarjakartacommons下的幾個jar包
下載spring開發包提供兩種zip包springframeworkwithdependencieszip和springframeworkzip我建議你下載springframeworkwithdependencieszip這個zip解壓縮後比後者多一個lib目錄其中有hibernatejeedomjaopalliancejakartacommons等常用包
javaioFileNotFoundException Could not open class path resource [……hbmxml]提示找不到xml文件?
原因一般有兩個()該xml文件沒有在classpath中
()applicationContexthibernatexml中的xml名字沒有帶包名比如<bean id=sessionFactory class=orgspringframeworkormhibernateLocalSessionFactoryBean> <property name=dataSource><ref bean=dataSource/></property> <property name=mappingResources> <list> <value>Userhbmxml</value> 錯改為 <value>com/yz/spring/domain/Userhbmxml</value> </list> </property> <property name=hibernateProperties> <props> <prop key=hibernatedialect> netsfhibernatedialectMySQLDialect </prop> <prop key=hibernateshow_sql>true</prop> </props> </property> </bean>
orgspringframeworkbeansNotWritablePropertyException Invalid property postDao of bean class?
出現異常的原因是在applicationxxxxml中property name的錯誤
<property name=……> 中name的名字是與bean的set方法相關的而且要注意大小寫
比如public class PostManageImpl extends BaseManage implements PostManage { private PostDAO dao = nullpublic void setPostDAO(PostDAO postDAO){ thisdao = postDAO}那麼xml的定義應該是<bean id=postManage parent=txProxyTemplate> <property name=target> <bean class=comyzspringserviceimplementPostManageImpl> <property name=postDAO><ref bean=postDAO/></property> 對<property name=dao><ref bean=postDAO/></property> 錯</bean> </property> </bean>
Spring中如何實現事務管理?
首先如果使用mysql確定mysql為InnoDB類型
事務管理的控制應該放到商業邏輯層你可以寫個處理商業邏輯的JavaBean在該JavaBean中調用DAO然後把該Bean的方法納入spring的事務管理
比如xml文件定義如下<bean id=txProxyTemplate abstract=true class=orgspringframeworktransactioninterceptorTransactionProxyFactoryBean> <property name=transactionManager><ref bean=transactionManager/></property> <property name=transactionAttributes> <props> <prop key=save*>PROPAGATION_REQUIRED</prop> <prop key=remove*>PROPAGATION_REQUIRED</prop> <prop key=*>PROPAGATION_REQUIRED</prop> </props> </property> </bean>
<bean id=userManage parent=txProxyTemplate> <property name=target> <bean class=comyzspringserviceimplementUserManageImpl> <property name=userDAO><ref bean=userDAO/></property> </bean> </property> </bean>
comyzspringserviceimplementUserManageImpl就是我們的實現商業邏輯的JavaBean我們通過parent元素?/span>
如何管理Spring框架下更多的JavaBean?
JavaBean越多spring配置文件就越大這樣不易維護為了使配置清晰我們可以將JavaBean分類管理放在不同的配置文件中 應用啟動時將所有的xml同時加載
比如
DAO層的JavaBean放到applicationContexthibernatexml中商業邏輯層的JavaBean放到applicationContextservicexml中然後啟動類中調用以下代碼載入所有的ApplicationContext
String[] paths = {com/yz/spring/dao/hibernate/applicationContexthibernatexmlcom/yz/spring/service/applicationContextservicexml}ctx = new ClassPathXmlApplicationContext(paths)
web應用中如何加載ApplicationContext?
可以通過定義webxml由web容器自動加載
<servlet><servletname>context</servletname><servletclass>orgsprntextContextLoaderServlet</servletclass><loadonstartup></loadonstartup></servlet>
<contextparam><paramname>contextConfigLocation</paramname><paramvalue>/WEBINF/applicationContexthibernatexml</paramvalue><paramvalue>/WEBINF/applicationContextservicexml</paramvalue></contextparam>
在spring中如何配置的logj?
在webxml中加入以下代碼即可
<contextparam><paramname>logjConfigLocation</paramname><paramvalue>/WEBINF/logjproperties</paramvalue></contextparam>
Spring框架入門的編程問題解決了我該如何更深地領會Spring框架呢?
這兩本書你該去看看這兩本書是由Spring的作者Rod Johnson編寫的
Expert One on one JEE Design and Development Expert One on one JEE Development Without EJB
你也該看看martinfowler的Inversion of Control Containers and the Dependency Injection pattern
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27991.html