﻿<?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-思-文章分类-經典文章</title><link>http://www.blogjava.net/xxxzheng/category/5395.html</link><description>路慢慢其休远兮,吾将上下而求素</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 20:22:39 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 20:22:39 GMT</pubDate><ttl>60</ttl><item><title>Spring 开发中常出现的 问题</title><link>http://www.blogjava.net/xxxzheng/articles/36166.html</link><dc:creator>Steve</dc:creator><author>Steve</author><pubDate>Mon, 20 Mar 2006 00:10:00 GMT</pubDate><guid>http://www.blogjava.net/xxxzheng/articles/36166.html</guid><wfw:comment>http://www.blogjava.net/xxxzheng/comments/36166.html</wfw:comment><comments>http://www.blogjava.net/xxxzheng/articles/36166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xxxzheng/comments/commentRss/36166.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xxxzheng/services/trackbacks/36166.html</trackback:ping><description><![CDATA[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&amp;#39;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柯迹捎诒嘁牒髎rc目录下的文件会拷贝到bin目录下，所以你可以把log4j.properties放到src目录下。<br /><br />　　这里给出一个log4j.properties的例子：<br /><br />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 <br /><br />　　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 />＜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＞ <br /><br />　　5、org.springframework.beans.NotWritablePropertyException: Invalid property &amp;#39;postDao&amp;#39; of bean class？<br /><br />　　出现异常的原因是在application-xxx.xml中property name的错误。<br /><br />　　＜property name="...."＞ 中name的名字是与bean的set方法相关的，而且要注意大小写。<br /><br />　　比如<br /><br />public class PostManageImpl extends BaseManage implements PostManage {<br />　private PostDAO dao = null;<br />　public void setPostDAO(PostDAO postDAO){<br />　　this.dao = postDAO;<br />　}<br />} <br /><br />　　那么xml的定义应该是：<br /><br />＜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＞ <br /><br />　　6、Spring中如何实现事务管理？<br /><br />　　首先，如果使用mysql，确定mysql为InnoDB类型。<br /><br />　　事务管理的控制应该放到商业逻辑层。你可以写个处理商业逻辑的JavaBean，在该JavaBean中调用DAO，然后把该Bean的方法纳入spring的事务管理。<br /><br />　　比如：xml文件定义如下：<br /><br />＜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＞ <br /><br />　　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 />String[] paths = {"com/yz/spring/dao/hibernate/applicationContext-hibernate.xml",<br />"com/yz/spring/service/applicationContext-service.xml"};<br />ctx = new ClassPathXmlApplicationContext(paths); <br /><br />　　8、web应用中如何加载ApplicationContext？<br /><br />　　可以通过定义web.xml，由web容器自动加载。<br /><br />＜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＞ <br /><br />　　9、在spring中如何配置的log4j?<br /><br />　　在web.xml中加入以下代码即可。<br /><br />＜context-param＞<br />＜param-name＞log4jConfigLocation＜/param-name＞<br />＜param-value＞/WEB-INF/log4j.properties＜/param-value＞<br />＜/context-param＞ <br /><br />　　10、Spring框架入门的编程问题解决了，我该如何更深地领会Spring框架呢？<br /><br />　　这两本书你该去看看。这两本书是由Spring的作者Rod Johnson编写的。<br /><br />Expert One on one J2EE Design and Development<br />Expert One on one J2EE Development Without EJB <br /><br />　　你也该看看martinfowler的Inversion of Control Containers and the Dependency Injection pattern。<br /><br />http://www.martinfowler.com/articles/injection.html <br />　<br />　　再好好研读一下spring的文档。<br /><br />http://www.jactiongroup.net/reference/html/index.html（中文版，未全部翻译） <br /><br />　　还有就是多实践吧。 <br /><img src ="http://www.blogjava.net/xxxzheng/aggbug/36166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xxxzheng/" target="_blank">Steve</a> 2006-03-20 08:10 <a href="http://www.blogjava.net/xxxzheng/articles/36166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>