Spring Web MVC和Hibernate的集成配置详解
网上看到很多关于spring与hibernate的集成的文章,奈何由于那些文章写作时间较早,很多都是spring 3 和hibernate 4等较旧的版本。所以我在这里使用更新的版本来说明一下。
添加项目依赖
首先我们需要一个java web项目,最好使用maven或gradle构建工具,方便我们解决软件依赖。我在这里使用gradle构建工具,构建脚本如下。我们只要引入spring-webmvc和spring-orm这两个包,其他的spring依赖会自动由构建工具解决。然后还需要引入数据源、hibernate、jstl等依赖项。脚本的最后定义了一个任务用于生成对应的pom文件方便maven工具使用。
group 'yitian.learn' version '1.0-snapshot' apply plugin: 'java' apply plugin: 'war' apply plugin: 'maven' apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginscripts/gretty.plugin' sourcecompatibility = 1.8 repositories { maven { url "http://maven.aliyun.com/nexus/content/groups/public/" } jcenter() } ext { springversion = '4.3.6.release' aspectjverison = '1.8.10' } dependencies { testcompile group: 'junit', name: 'junit', version: '4.12' compile group: 'org.springframework', name: 'spring-webmvc', version: springversion compile group: 'org.springframework', name: 'spring-orm', version: springversion compile group: 'org.glassfish.web', name: 'jstl-impl', version: '1.2' compile group: 'org.projectlombok', name: 'lombok', version: '1.16.12' compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.6.final' compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.40' compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.1.1' compile group: 'org.aspectj', name: 'aspectjweaver', version: aspectjverison } task writenewpom { dolast { pom { }.writeto("$projectdir/pom.xml") } }
配置web.xml
然后打开web-inf/web.xml文件,添加以下内容。
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <context-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/applicationcontext.xml</param-value> </context-param> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> </web-app>
配置spring
相对应的应该有两个spring配置文件/web-inf/applicationcontext.xml和/web-inf/dispatcher-servlet.xml。前者是根配置文件,用于配置数据库等后端、全局的组件,后者是mvc配置文件,用于配置mvc和web相关的组件。
然后在/web-inf/applicationcontext.xml中,我们配置hibernate和spring集成的组件。我们需要配置数据源、hibernatesessionfactory、hibernate事务管理器、事务连接点、hibernate模板等bean,然后在操作数据的时候使用hibernate模板,就能获得spring控制的事务管理功能了。
<?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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config/> <!--数据源--> <bean id="datasource" class="org.apache.commons.dbcp2.basicdatasource" destroy-method="close"> <property name="driverclassname" value="com.mysql.jdbc.driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="12345678"/> </bean> <!--hibernate--> <bean id="sessionfactory" class="org.springframework.orm.hibernate5.localsessionfactorybean"> <property name="datasource" ref="datasource"/> <property name="hibernateproperties"> <props> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> <property name="packagestoscan" value="yitian.learn.entity"/> </bean> <!--设置hibernate模板--> <bean id="hibernatetemplate" class="org.springframework.orm.hibernate5.hibernatetemplate"> <property name="sessionfactory" ref="sessionfactory"/> </bean> <!--设置hibernate事务管理器--> <bean id="transactionmanager" class="org.springframework.orm.hibernate5.hibernatetransactionmanager"> <property name="sessionfactory" ref="sessionfactory"/> </bean> <!--数据访问对象--> <bean id="userdao" class="yitian.learn.dao.hibernateuserdao"/> <!--设置事务管理--> <tx:advice id="txadvice" transaction-manager="transactionmanager"> <tx:attributes> <tx:method name="find*" read-only="true"/> <tx:method name="*"/> </tx:attributes> </tx:advice> <!--使用aop设置事务管理--> <aop:config> <aop:pointcut id="userdaopointcut" expression="execution(* yitian.learn.dao.*.*(..))"/> <aop:advisor advice-ref="txadvice" pointcut-ref="userdaopointcut"/> </aop:config> </beans>
然后来配置一下spring web mvc的组件。在dispatcher-servlet.xml中添加以下配置。这里添加了jsp视图解析器和类型转换器,如果不需要自定义类型转换可以将对应片段删掉。
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <mvc:view-resolvers> <mvc:jsp prefix="/web-inf/jsp/" suffix=".jsp" view-class="org.springframework.web.servlet.view.jstlview"/> </mvc:view-resolvers> <mvc:default-servlet-handler/> <mvc:annotation-driven conversion-service="conversionservice"/> <context:component-scan base-package="yitian.learn"/> <bean id="conversionservice" class="org.springframework.context.support.conversionservicefactorybean"> <property name="converters"> <set> <bean class="yitian.learn.utils.string2localdateconverter"/> </set> </property> </bean> </beans>
至此,hibernate与spring的集成就算配置完了。最后我还写了一个小例子,放在了github上,有兴趣的同学可以看看。
总结
以上就是本文关于spring web mvc和hibernate的集成配置详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
推荐阅读
-
Spring Web MVC和Hibernate的集成配置详解
-
详解spring 配置的两种方式:JAVA配置和注解配置
-
Spring boot中@Conditional和spring boot的自动配置实例详解
-
Spring MVC集成springfox-swagger2构建restful API的方法详解
-
详解spring 配置的两种方式:JAVA配置和注解配置
-
SpringMVC和Spring的配置文件扫描包详解
-
laravel 配置路由 api和web定义的路由的区别详解
-
详解Spring Hibernate连接oracle数据库的配置
-
详解使用Nginx和uWSGI配置Python的web项目的方法
-
spring-mvc.xml 和 application-context.xml的配置与深入理解