﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-雅典之夏的小站-随笔分类-Spring</title><link>http://www.blogjava.net/rkind/category/5679.html</link><description>&lt;font size=5 align=right&gt;知人者智  自知者明
Fighting!!&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 07:18:20 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 07:18:20 GMT</pubDate><ttl>60</ttl><item><title>Spring 编程入门十大问题解答 转</title><link>http://www.blogjava.net/rkind/archive/2005/12/06/22750.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Tue, 06 Dec 2005 09:54:00 GMT</pubDate><guid>http://www.blogjava.net/rkind/archive/2005/12/06/22750.html</guid><wfw:comment>http://www.blogjava.net/rkind/comments/22750.html</wfw:comment><comments>http://www.blogjava.net/rkind/archive/2005/12/06/22750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rkind/comments/commentRss/22750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rkind/services/trackbacks/22750.html</trackback:ping><description><![CDATA[<FONT size=4>1、如何学习Spring？<BR><BR>　　你可以通过下列途径学习spring：<BR><BR>　　(1) spring下载包中doc目录下的MVC-step-by-step和sample目录下的例子都是比较好的spring开发的例子。 <BR><BR>　　(2) AppFuse集成了目前最流行的几个开源轻量级框架或者工具 Ant,XDoclet,Spring,Hibernate(iBATIS),JUnit,Cactus,StrutsTestCase,Canoo's WebTest,Struts Menu,Display Tag Library,OSCache,JSTL,Struts 。<BR><BR>　　你可以通过AppFuse源代码来学习spring。<BR><BR>AppFuse网站：http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse<BR><BR>　　(3)Spring 开发指南(夏昕)（http://www.xiaxin.net/Spring_Dev_Guide.rar）<BR><BR>　　一本spring的入门书籍,里面介绍了反转控制和依赖注射的概念，以及spring的bean管理，spring的MVC，spring和hibernte，iBatis的结合。<BR><BR>　　(4) spring学习的中文论坛<BR><BR>　　SpringFramework中文论坛(http://spring.jactiongroup.net)<BR><BR>　　Java视线论坛(http://forum.javaeye.com)的spring栏目<BR><BR>　　2、利用Spring框架编程，console打印出log4j:WARN Please initialize the log4j system properly？<BR><BR>　　说明你的log4j.properties没有配置。请把log4j.properties放到工程的classpath中，eclipse的classpath为bin目录，由于编译后src目录下的文件会拷贝到bin目录下，所以你可以把log4j.properties放到src目录下。<BR><BR>　　这里给出一个log4j.properties的例子：<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>log4j.rootLogger=DEBUG,stdout<BR>log4j.appender.stdout=org.apache.log4j.ConsoleAppender<BR>log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<BR>log4j.appender.stdout.layout.ConversionPattern=%d %5p (%F:%L) - %m%n</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　3、出现 java.lang.NoClassDefFoundError?<BR><BR>　　一般情况下是由于你没有把必要的jar包放到lib中。<BR><BR>　　比如你要采用spring和hibernate（带事务支持的话），你除了spring.jar外还需要hibernat.jar、aopalliance.jar、cglig.jar、jakarta-commons下的几个jar包。<BR><BR>http://www.springframework.org/download.html下载spring开发包，提供两种zip包<BR>spring-framework-1.1.3-with-dependencies.zip和spring-framework-1.1.3.zip，我建议你下载spring-framework-1.1.3-with-dependencies.zip。这个zip解压缩后比后者多一个lib目录，其中有hibernate、j2ee、dom4j、aopalliance、jakarta-commons等常用包。<BR><BR>　　4、java.io.FileNotFoundException: Could not open class path resource [....hbm.xml],提示找不到xml文件？<BR><BR>　　原因一般有两个：<BR><BR>　　(1)该xml文件没有在classpath中。 <BR><BR>　　(2)applicationContext-hibernate.xml中的xml名字没有带包名。比如：<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>＜bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"＞<BR>＜property name="dataSource"＞＜ref bean="dataSource"/＞＜/property＞<BR>＜property name="mappingResources"＞<BR>　＜list＞<BR>　　＜value＞User.hbm.xml＜/value＞<BR>　　错，改为： <BR>　　＜value＞com/yz/spring/domain/User.hbm.xml＜/value＞<BR>　＜/list＞<BR>＜/property＞<BR>＜property name="hibernateProperties"＞<BR>＜props＞ <BR>　＜prop key="hibernate.dialect"＞ net.sf.hibernate.dialect.MySQLDialect ＜/prop＞ <BR>　＜prop key="hibernate.show_sql"＞true＜/prop＞ <BR>＜/props＞ <BR>＜/property＞<BR>＜/bean＞</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　5、org.springframework.beans.NotWritablePropertyException: Invalid property 'postDao' of bean class？<BR><BR>　　出现异常的原因是在application-xxx.xml中property name的错误。<BR><BR>　　＜property name="...."＞ 中name的名字是与bean的set方法相关的，而且要注意大小写。<BR><BR>　　比如<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>public class PostManageImpl extends BaseManage implements PostManage {<BR>　private PostDAO dao = null;<BR>　public void setPostDAO(PostDAO postDAO){<BR>　　this.dao = postDAO;<BR>　}<BR>}</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　那么xml的定义应该是：<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>＜bean id="postManage" parent="txProxyTemplate"＞<BR>＜property name="target"＞<BR>　＜bean class="com.yz.spring.service.implement.PostManageImpl"＞<BR>　　＜property name="postDAO"＞＜ref bean="postDAO"/＞＜/property＞ 对<BR>　　＜property name="dao"＞＜ref bean="postDAO"/＞＜/property＞ 错<BR>　＜/bean＞<BR>＜/property＞<BR>＜/bean＞</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　6、Spring中如何实现事务管理？<BR><BR>　　首先，如果使用mysql，确定mysql为InnoDB类型。<BR><BR>　　事务管理的控制应该放到商业逻辑层。你可以写个处理商业逻辑的JavaBean，在该JavaBean中调用DAO，然后把该Bean的方法纳入spring的事务管理。<BR><BR>　　比如：xml文件定义如下：<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>＜bean id="txProxyTemplate" abstract="true"<BR>class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"＞<BR>＜property name="transactionManager"＞＜ref bean="transactionManager"/＞＜/property＞<BR>＜property name="transactionAttributes"＞<BR>＜props＞<BR>＜prop key="save*"＞PROPAGATION_REQUIRED＜/prop＞<BR>＜prop key="remove*"＞PROPAGATION_REQUIRED＜/prop＞<BR>＜prop key="*"＞PROPAGATION_REQUIRED＜/prop＞<BR>＜/props＞<BR>＜/property＞<BR>＜/bean＞<BR><BR>＜bean id="userManage" parent="txProxyTemplate"＞<BR>　＜property name="target"＞<BR>　　＜bean class="com.yz.spring.service.implement.UserManageImpl"＞<BR>　　　＜property name="userDAO"＞＜ref bean="userDAO"/＞＜/property＞<BR>　　＜/bean＞<BR>　＜/property＞<BR>＜/bean＞</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　com.yz.spring.service.implement.UserManageImpl就是我们的实现商业逻辑的JavaBean。我们通过parent元素声明其事务支持。<BR><BR>　　7、如何管理Spring框架下更多的JavaBean？<BR><BR>　　JavaBean越多，spring配置文件就越大，这样不易维护。为了使配置清晰，我们可以将JavaBean分类管理，放在不同的配置文件中。 应用启动时将所有的xml同时加载。<BR><BR>　　比如：<BR><BR>　　DAO层的JavaBean放到applicationContext-hibernate.xml中，商业逻辑层的JavaBean放到applicationContext-service.xml中。然后启动类中调用以下代码载入所有的ApplicationContext。<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>String[] paths = {"com/yz/spring/dao/hibernate/applicationContext-hibernate.xml",<BR>"com/yz/spring/service/applicationContext-service.xml"};<BR>ctx = new ClassPathXmlApplicationContext(paths);</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　8、web应用中如何加载ApplicationContext？<BR><BR>　　可以通过定义web.xml，由web容器自动加载。<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>＜servlet＞<BR>＜servlet-name＞context＜/servlet-name＞<BR>＜servlet-class＞org.springframework.web.context.ContextLoaderServlet＜/servlet-class＞<BR>＜load-on-startup＞1＜/load-on-startup＞<BR>＜/servlet＞<BR><BR>＜context-param＞<BR>＜param-name＞contextConfigLocation＜/param-name＞<BR>＜param-value＞/WEB-INF/applicationContext-hibernate.xml＜/param-value＞<BR>＜param-value＞/WEB-INF/applicationContext-service.xml＜/param-value＞<BR>＜/context-param＞</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　9、在spring中如何配置的log4j?<BR><BR>　　在web.xml中加入以下代码即可。<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>＜context-param＞<BR>＜param-name＞log4jConfigLocation＜/param-name＞<BR>＜param-value＞/WEB-INF/log4j.properties＜/param-value＞<BR>＜/context-param＞</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　10、Spring框架入门的编程问题解决了，我该如何更深地领会Spring框架呢？<BR><BR>　　这两本书你该去看看。这两本书是由Spring的作者Rod Johnson编写的。<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>Expert One on one J2EE Design and Development<BR>Expert One on one J2EE Development Without EJB</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　你也该看看martinfowler的Inversion of Control Containers and the Dependency Injection pattern。<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>http://www.martinfowler.com/articles/injection.html</FONT></TD></TR></TBODY></TABLE><FONT size=4>　<BR>　　再好好研读一下spring的文档。<BR><BR></FONT>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD><FONT size=4>http://www.jactiongroup.net/reference/html/index.html（中文版，未全部翻译）</FONT></TD></TR></TBODY></TABLE><BR><FONT size=4>　　还有就是多实践吧。<BR></FONT><img src ="http://www.blogjava.net/rkind/aggbug/22750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rkind/" target="_blank">rkind</a> 2005-12-06 17:54 <a href="http://www.blogjava.net/rkind/archive/2005/12/06/22750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>