搭建SSH項目過程


注:http://blog.csdn.net/eson_15/article/details/51277324此文章是根據這個作者的步驟搭建SSH環境時本人遇到的問題,在此作爲記錄

一、新建dynamic web project

   1.deployment Descriptor ---右鍵Generate----可以生成web.xml文件等
   2.User Library  : Spring的jar包很多,開發的時候建議將它們分個類,然後依次添加到User Library,方便管理,也一目瞭然。(build path---add Library---User Library---new-- add external Jars )
!!後來發現使用user Library 這種方式,不會自動copy到項目的lib目錄下,這樣部署到tomcat上會出現問題。使用網上的解決辦法:

右鍵項目,選擇properties,然後選擇deployment assembly,在這裏,將自己用的到UserLibrary添加進來就OK了,在部署項目的時候,eclipse會將UserLibrary的所有jar包copy到tomcat的項目的lib目錄下,這樣就可以加載了。---仍然不行 所以最後還是直接拷貝到了lib目錄下 使用web libraries


   3. @RunWith(SpringJUnit4ClassRunner.class)  
      @ContextConfiguration(locations="classpath:beans.xml")  測試spring Ioc功能

這一步只做瞭如下配置:
1)導包spring-4.2.4-core、spring-4.2.4-aop
2)在applicationContext.xml中加入bean的定義

3) junit測試文件

   


4.在applicationContext.xml中配置:dataSource SqlSessionFactory transactionManager



      <!-- com.mchange.v2.c3p0.ComboPooledDataSource類在c3p0-0.9.5.1.jar包的com.mchange.v2.c3p0包中 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource.class">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/shop" />
<property name="user" value="root" />
<property name="password" value="123456" />
</bean>
<!-- org.springframework.orm.hibernate4.LocalSessionFactoryBean類在spring-orm-4.2.4.RELEASE. 
jar包的org.springframework.orm.hibernate4包中 -->
<bean id="SqlSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name ="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml" /> <!-- 加載hibernate配置文件 -->
</bean>
<!-- org.springframework.orm.hibernate4.HibernateTransactionManager類spring-orm-4.2.4.RELEASE.jar包的org.springframework.orm.hibernate4包中 -->

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="SqlSessionFactory" ref="SqlSessionFactory"/>
</bean>


     在此對比SSM 使用mybatis JPA的配置:

<!-- local development環境 -->
<beans profile="development">
<context:property-placeholder ignore-resource-not-found="true"
location="classpath*:/application.properties,
           classpath*:/application.development.properties" />
<!-- 數據源配置, 使用Tomcat JDBC連接池 -->
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />

<!-- Connection Pooling Info -->
<property name="maxActive" value="${jdbc.pool.maxActive}" />
<property name="maxIdle" value="${jdbc.pool.maxIdle}" />
<property name="minIdle" value="0" />
<property name="defaultAutoCommit" value="false" />
</bean>


<!-- MyBatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自動掃描entity目錄, 省掉Configuration.xml裏的手工配置 -->
<property name="typeAliasesPackage" value="yitai.common.entity" />
<!-- 顯式指定Mapper文件位置 -->
<property name="mapperLocations">
<list>
<value>classpath:/mybatis/*Mapper.xml</value>
<value>classpath:/mybatis/**/*Mapper.xml</value>
</list>
</property>
</bean>

<!-- Jpa Entity Manager 配置 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
<property name="packagesToScan" value="yitai.common.entity"/>
<property name="jpaProperties">
<props>
<!-- 命名規則 My_NAME->MyName -->
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
</props>
</property>
</bean>

<!-- Jpa 事務配置 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>

</bean>


5.僅對struts環境進行測試時,出現問題:struts2啓動報錯com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
因爲引入了struts2-spring-plugin.jar包,
該插件引入工程後,會自動設置Struts的ObjectFactory爲StrutsSpringObjectFactory,從而讓Spring的IOC容器來託管Struts的Action。所以導致了啓動的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章