整合spring,hibernate4,junit
本文的環境是:
spring-framework-3.1.0
hibernate-4.1.6
junit-4.10
這裡大部分是參考我以前熟悉的配置方法,只是把hibernate3升級到hibernate4,其實差不了很多,只要注意幾個要點:
1、以前整合hibernate3和spring的時候,spring的ORM包裡提供了HibernateSupport和HibernateTemplate這兩個輔助類,我用的是HibernateTemplate。不過在Hibernate4裡,spring不再提供這種輔助類,用的是hibernate4的原生API
2、整合hibernate4之後,最小事務級別必須是Required,如果是以下的級別,或者沒有開啟事務的話,無法得到當前的Session
Java程式碼
- sessionFactory.getCurrentSession();
執行這行程式碼,會丟擲No Session found for current thread
對於執行時,這個可能不是很大的問題,因為在Service層一般都會開啟事務,只要保證級別高於Required就可以了。可是由於在Dao層是不會開啟事務的,所以針對Dao層進行單元測試就有困難了。
解決的辦法是,或者在Dao層的單元測試類上,開啟事務。或者專門準備一個for unit test的配置檔案,在Dao層就開啟事務。我採用的是前者
首先是目錄結構,這裡暫時還沒有整合struts2、spring-mvc等web框架,也尚未包含js、css、jsp等目錄
這裡除了servlet規範規定的web.xml必須放在WEB-INF下之外,其他的所有配置檔案,都放在src根目錄下。這樣做的好處是,後續所有需要引用配置檔案的地方,都可以統一用classpath:字首找到配置檔案。之前試過有的檔案放在WEB-INF下,有的放在src根目錄下,所以在引用的地方會不太統一,比較麻煩。
當然無論配置檔案怎麼放,只要恰當使用classpath:和file:字首,都是能找到的,只是個人選擇的問題。另外,由於現在配置檔案還比較少,所以直接扔到src根目錄下沒什麼問題,如果配置檔案增多了,可以再進行劃分
接下來是web.xml
Xml程式碼
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- id="WebApp_ID" version="3.0">
- <display-name>DevelopFramework</display-name>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:beans.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>CXFServlet</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>CXFServlet</servlet-name>
- <url-pattern>/webservice/*</url-pattern>
- </servlet-mapping>
- </web-app>
這裡沒有什麼要特別注意的,只是聲明瞭beans.xml的路徑。這裡的servlet是配置cxf的,與hibernate沒有關係。因為目標是要搭一個完整的開發框架,所以把cxf也事先放上了
接下來是spring的配置檔案beans.xml
Xml程式碼
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.1.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
- http://cxf.apache.org/jaxws
- http://cxf.apache.org/schemas/jaxws.xsd">
- <import resource="classpath:META-INF/cxf/cxf.xml" />
- <context:component-scan base-package="com.huawei.inoc.framework" />
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>classpath:jdbc.properties</value>
- </list>
- </property>
- </bean>
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
- <property name="driverClass" value="${driverClass}" />
- <property name="jdbcUrl" value="${jdbcUrl}" />
- <property name="user" value="${user}" />
- <property name="password" value="${password}" />
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="mappingLocations" value="classpath:/com/huawei/inoc/framework/model/**/*.hbm.xml" />
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- <prop key="hibernate.format_sql">true</prop>
- <prop key="hibernate.jdbc.fetch_size">50</prop>
- <prop key="hibernate.jdbc.batch_size">25</prop>
- <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
- </props>
- </property>
- </bean>
- <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
- <tx:annotation-driven transaction-manager="transactionManager" />
- <jaxws:endpoint id="helloWorld" implementor="#helloWorldWebserviceImpl" address="/HelloWorld" />
- <jaxws:client id="client"
- serviceClass="com.huawei.inoc.dummy.webservice.IDemoSupport"
- address="http://localhost:8080/Dummy/webservice/getDate" />
- </beans>
這裡有幾點要注意的:
Xml程式碼
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
- <property name="driverClass" value="${driverClass}" />
- <property name="jdbcUrl" value="${jdbcUrl}" />
- <property name="user" value="${user}" />
- <property name="password" value="${password}" />
- </bean>
這裡把jdbc驅動的引數,放到了專門的配置檔案裡,改動起來會比較方便。另外資料庫連線池在實際生產環境可以考慮切換一下,比如聽說阿里巴巴出的druid就挺不錯,jboss和WAS自帶的連線池也是不錯的
Xml程式碼
相關推薦
整合spring,hibernate4,junit
論壇上有另外一篇更全面的帖子,jinnianshilongnian寫的:http://www.iteye.com/topic/1120924 本文的環境是: spring-framework-3.1.0 hibernate-4.1.6 junit-4.
Spring+Hibernate4 Junit 報錯No Session found for current thread
論壇上有另外一篇更全面的帖子,jinnianshilongnian寫的:http://www.iteye.com/topic/1120924 本文的環境是: spring-framework-3.1.0 hibernate-4.1.6 junit-
Spring與Junit測試整合
color ati ring1 cat with IT 整合 位置 per 一、引入spring測試包:text包 二、@RunWith:指定spring對junit提供的一個運行器 @ContextConfiguration: locations指定spring配置
Spring整合Spring MVC及Mybatis進行Junit單元測試
我們可以在不啟動服務的情況下,進行單元測試,以便提交出高質量的程式碼。本文以一個小例子,說明在Spring中如何進行單元測試。 一:測試Controller 1:在pom.xml檔案中引入相關依賴 <properties> <!-- 設定專案編碼編碼 --&
junit整合Spring
作為一個小萌新,今天看文章發現junit可以實現對Spring的測試,對於一些複雜的操作都進行了不少的簡化 首先要對希望測試的類新增單元 點選選擇要測試的方法,完成 import org.junit.Test; import javax.annot
Spring+MyBatis+JUnit整合測試的搭建過程總結
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema
Spring之junit測試整合
簡介 Spring提供spring-test-5.2.1.RELEASE.jar 可以整合junit。 優勢:可以簡化測試程式碼(不需要手動建立上下文,即手動建立spring容器) 使用spring和junit整合的步驟 1.匯入jar包 2.建立包com.igeek.test,建立類SpringTest
CXF WebService整合Spring
部分 控制 utf 內容 使用 mes classpath html row 首先,CXF和spring整合需要準備如下jar包文件: 這邊我是用Spring的jar包是Spring官方提供的,並沒有使用CXF中的Spring的jar文件。 添加這麽多文件後,首先在web
整合 Spring + SpringMVC + MyBatis
provide star 實現 per ng- 獲取自增 check fas manage < 一 > POM 配置文件 ( 如果出現 JAR 包 引入錯誤, 請自行下載 ) <project xmlns="http://maven.apach
RabbitMQ整合spring
username cep virtual containe 1.7 dconf system xmlns war 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://ww
MyBatis使用總結+整合Spring
hal bench his nic sig cti chan ive sha Java%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E6%97%A5%E5%B8%B8%E2%80%94%E2%80%94%20%E3%80%8A%E7%BC%96%
CXF整合spring,在tomcat中發布webService
load loader print protect 分享 list factor 信息 ioe 1、首先下載CXF的jar包 http://pan.baidu.com/s/1dFBwSRf 密碼: qyax。裏面自帶了需要用到的spring的jar包 2、新建一個web項目
mybatis 整合spring之mapperLocations配置的問題
any 引入 location rop myba 路徑 通過 user configure 今天嘗試spring整合mybatis時遇到這麽一個問題,就是在配置sqlSessionFactory時是否要配置mapperLocations的問題。 <bean i
整合Spring框架和Hibernate框架
slf4j erl update rep java 監聽 session hiberna .cn -------------------siwuxie095 整合 Spring 框架和 Hibernate 框架
Shiro整合Spring
static actor rate utf-8 -i pen aso not exp 首先需要添加shiro的spring整合包。 要想在WEB應用中整合Spring和Shiro的話,首先需要添加一個由spring代理的過濾器如下: <!-- The filter-
(二)整合spring cloud雲服務架構 - particle雲架構
介紹 能夠 步驟 架構 第一篇 img .net 業務 服務架構 第一篇文章簡單給大家介紹了Spring Cloud架構,我這邊結合了當前大部分企業的通用需求,包括技術的選型比較嚴格、苛刻,不僅要用業界最流行的技術,還要和國際接軌,在未來的5~10年內不能out。作為公司
(一)整合spring cloud雲服務架構 - Spring Cloud簡介
springcloud 架構 雲服務 Spring Cloud是一系列框架的有序集合。利用Spring Boot的開發模式簡化了分布式系統基礎設施的開發,如服務發現、註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等(這裏只簡單的列了一部分),都可以用Spring Boot的開發風格做到一鍵啟動和部署
(三)整合spring cloud雲服務架構 - particle雲架構代碼結構構建
itl log lan 作用 購物 基本架構 集成 eight control 上一篇介紹了spring cloud雲服務架構的基本架構圖,本篇我們根據架構圖進行代碼的構建,根據微服務化設計思想,結合spring cloud本身的服務發現、治理、配置化管理、分布式等項目優秀
(四)整合spring cloud雲服務架構 - particle-common-framework代碼介紹
.cn server control 簡單的 阿裏巴巴 統計 icontrol htm 回顧 上一篇我們介紹了spring cloud雲服務架構 - particle雲架構代碼結構,簡單的按照幾個大的部分去構建代碼模塊,讓我們來回顧一下: 第一部分: 針對於普通服務的基礎
(六)整合spring cloud雲服務架構 - HongHu雲架構common-service代碼結構分析
如何 通過 -m 交互 art 實現 使用 sof 組織 當前的分布式微服務雲架構平臺使用Maven構建,所以common-service的通用服務按照maven構建獨立的系統服務,結構如下: particle-commonservice: spring cloud 系統