服务器之家

服务器之家 > 正文

Spring Web MVC和Hibernate的集成配置详解

时间:2021-03-13 11:56     来源/作者:过了即是客

网上看到很多关于SpringHibernate的集成的文章,奈何由于那些文章写作时间较早,很多都是Spring 3 和Hibernate 4等较旧的版本。所以我在这里使用更新的版本来说明一下。

添加项目依赖

首先我们需要一个Java Web项目,最好使用Maven或Gradle构建工具,方便我们解决软件依赖。我在这里使用Gradle构建工具,构建脚本如下。我们只要引入spring-webmvc和spring-orm这两个包,其他的Spring依赖会自动由构建工具解决。然后还需要引入数据源、Hibernate、JSTL等依赖项。脚本的最后定义了一个任务用于生成对应的pom文件方便Maven工具使用。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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文件,添加以下内容。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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控制的事务管理功能了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?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视图解析器和类型转换器,如果不需要自定义类型转换可以将对应片段删掉。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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的集成配置详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

原文链接:http://blog.csdn.net/u011054333/article/details/54930571

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部

853
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40