WEB2.0開發

          心態決定行為,行為決定習慣,習慣決定命運

          Spring 編程入門十大問題解答

          1 、如何學習 Spring
            你可以通過下列途徑學習 spring
             (1) spring 下載包中 doc 目錄下的 MVC-step-by-step sample 目錄下的例子都是比較好的 spring 開發的例子。
             (2) AppFuse 集成了目前最流行的幾個開源輕量級框架或者工具 Ant,XDoclet,Spring,Hibernate(iBATIS),JUnit,Cactus,StrutsTestCase,Canoo's WebTest,Struts Menu,Display Tag Library,OSCache,JSTL,Struts
            你可以通過 AppFuse 源代碼來學習 spring
          AppFuse 網站: http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse
             (3)Spring 開發指南 ( 夏昕 ) http://www.xiaxin.net/Spring_Dev_Guide.rar
            一本 spring 的入門書籍 , 里面介紹了反轉控制和依賴注射的概念,以及 spring bean 管理, spring MVC spring hibernte iBatis 的結合。
             (4) spring 學習的中文論壇
             SpringFramework 中文論壇 (http://spring.jactiongroup.net)
             Java 視線論壇 (http://forum.javaeye.com) spring 欄目
             2 、利用 Spring 框架編程, console 打印出 log4j:WARN Please initialize the log4j system properly
            說明你的 log4j.properties 沒有配置。請把 log4j.properties 放到工程的 classpath 中, eclipse classpath bin 目錄,由于編譯后 src 目錄下的文件會拷貝到 bin 目錄下,所以你可以把 log4j.properties 放到 src 目錄下。
            這里給出一個 log4j.properties 的例子:

          log4j.rootLogger=DEBUG,stdout
          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
          log4j.appender.stdout.layout.ConversionPattern=%d %5p (%F:%L) - %m%n

             3 、出現 java.lang.NoClassDefFoundError?
            一般情況下是由于你沒有把必要的 jar 包放到 lib 中。
            比如你要采用 spring hibernate (帶事務支持的話),你除了 spring.jar 外還需要 hibernat.jar aopalliance.jar cglig.jar jakarta-commons 下的幾個 jar 包。
          http://www.springframework.org/download.html 下載 spring 開發包,提供兩種 zip
          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 等常用包。
             4 java.io.FileNotFoundException: Could not open class path resource [....hbm.xml], 提示找不到 xml 文件?
            原因一般有兩個:
             (1) xml 文件沒有在 classpath 中。
             (2)applicationContext-hibernate.xml 中的 xml 名字沒有帶包名。比如:

          bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"
          property name="dataSource" >< ref bean="dataSource"/ >< /property
          property name="mappingResources"
           < list
            < value User.hbm.xml /value
            錯,改為:
            < value com/yz/spring/domain/User.hbm.xml /value
           < /list
          /property
          property name="hibernateProperties"
          props
           < prop key="hibernate.dialect" net.sf.hibernate.dialect.MySQLDialect /prop
           < prop key="hibernate.show_sql" true /prop
          /props
          /property
          /bean

             5 org.springframework.beans.NotWritablePropertyException: Invalid property 'postDao' of bean class
            出現異常的原因是在 application-xxx.xml property name 的錯誤。
            < property name="...." name 的名字是與 bean set 方法相關的,而且要注意大小寫。
            比如

          public class PostManageImpl extends BaseManage implements PostManage {
            private PostDAO dao = null;
            public void setPostDAO(PostDAO postDAO){
             this.dao = postDAO;
            }
          }

            那么 xml 的定義應該是:

          bean id="postManage" parent="txProxyTemplate"
          property name="target"
           < bean class="com.yz.spring.service.implement.PostManageImpl"
            < property name="postDAO" >< ref bean="postDAO"/ >< /property
            < property name="dao" >< ref bean="postDAO"/ >< /property
           < /bean
          /property
          /bean

             6 Spring 中如何實現事務管理?
            首先,如果使用 mysql ,確定 mysql InnoDB 類型。
            事務管理的控制應該放到商業邏輯層。你可以寫個處理商業邏輯的 JavaBean ,在該 JavaBean 中調用 DAO ,然后把該 Bean 的方法納入 spring 的事務管理。
            比如: xml 文件定義如下:

          bean id="txProxyTemplate" abstract="true"
          class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"

          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="com.yz.spring.service.implement.UserManageImpl"
             < property name="userDAO" >< ref bean="userDAO"/ >< /property
            < /bean
           < /property
          /bean

             com.yz.spring.service.implement.UserManageImpl 就是我們的實現商業邏輯的 JavaBean 。我們通過 parent 元素聲明其事務支持。
             7 、如何管理 Spring 框架下更多的 JavaBean
             JavaBean 越多, spring 配置文件就越大,這樣不易維護。為了使配置清晰,我們可以將 JavaBean 分類管理,放在不同的配置文件中。 應用啟動時將所有的 xml 同時加載。
            比如:
             DAO 層的 JavaBean 放到 applicationContext-hibernate.xml 中,商業邏輯層的 JavaBean 放到 applicationContext-service.xml 中。然后啟動類中調用以下代碼載入所有的 ApplicationContext

          String[] paths = {"com/yz/spring/dao/hibernate/applicationContext-hibernate.xml",
          "com/yz/spring/service/applicationContext-service.xml"};
          ctx = new ClassPathXmlApplicationContext(paths);

             8 web 應用中如何加載 ApplicationContext
            可以通過定義 web.xml ,由 web 容器自動加載。

          servlet
          servlet-name context /servlet-name
          servlet-class org.springframework.web.context.ContextLoaderServlet /servlet-class
          load-on-startup 1 /load-on-startup
          /servlet

          context-param
          param-name contextConfigLocation /param-name
          param-value /WEB-INF/applicationContext-hibernate.xml /param-value
          param-value /WEB-INF/applicationContext-service.xml /param-value
          /context-param

             9 、在 spring 中如何配置的 log4j?
            在 web.xml 中加入以下代碼即可。

          context-param
          param-name log4jConfigLocation /param-name
          param-value /WEB-INF/log4j.properties /param-value
          /context-param

             10 Spring 框架入門的編程問題解決了,我該如何更深地領會 Spring 框架呢?
            這兩本書你該去看看。這兩本書是由 Spring 的作者 Rod Johnson 編寫的。

          Expert One on one J2EE Design and Development
          Expert One on one J2EE Development Without EJB

            你也該看看 martinfowler Inversion of Control Containers and the Dependency Injection pattern

          http://www.martinfowler.com/articles/injection.html

            再好好研讀一下 spring 的文檔。

          http://www.jactiongroup.net/reference/html/index.html (中文版,未全部翻譯)

          posted on 2006-04-05 12:29 ymx 閱讀(281) 評論(0)  編輯  收藏 所屬分類: Spring

          主站蜘蛛池模板: 昌都县| 晋江市| 运城市| 开鲁县| 广饶县| 安义县| 集安市| 上林县| 七台河市| 北碚区| 巴东县| 五寨县| 江山市| 上林县| 连南| 东阳市| 灵石县| 自治县| 含山县| 天门市| 那坡县| 六盘水市| 长武县| 合水县| 嘉荫县| 绩溪县| 高碑店市| 当雄县| 玉林市| 江山市| 武山县| 鱼台县| 邯郸县| 二连浩特市| 抚顺市| 旺苍县| 额济纳旗| 东台市| 富平县| 马公市| 南城县|