天天看点

Spring+SpringMVC+hibernate+maven配置文件

1.pom.xml文件:

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>Person</groupId>

  <artifactId>Person</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>war</packaging>

  <name>Person</name>

  <description/>

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

      <spring.version>4.3.5.RELEASE</spring.version>  

        <hibernate.version>4.2.5.Final</hibernate.version>  

        <jackson.version>2.8.5</jackson.version>  

        <junit.version>4.12</junit.version>  

        <ehcache.version>2.10.3</ehcache.version>  

        <log4j.version>1.2.17</log4j.version>  

        <mysql.version>5.1.37</mysql.version>  

        <druid.version>1.0.27</druid.version>  

        <aspectjweaver.version>1.8.7</aspectjweaver.version>  

        <webVersion>3.0</webVersion>  

  </properties>

  <dependencies>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>bean-validator</artifactId>

      <version>3.0-JBoss-4.0.2</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.annotation</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.ejb</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.enterprise.deploy</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.jms</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.management.j2ee</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.eclipse.persistence</groupId>

      <artifactId>javax.persistence</artifactId>

      <version>2.0.0</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.resource</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.security.auth.message</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.security.jacc</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.servlet</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.servlet.jsp</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.servlet.jsp.jstl</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish</groupId>

      <artifactId>javax.transaction</artifactId>

      <version>3.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>javax.xml.bind</groupId>

      <artifactId>jaxb-api-osgi</artifactId>

      <version>2.2.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>javax.ws.rs</groupId>

      <artifactId>jsr311-api</artifactId>

      <version>1.1.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish.web</groupId>

      <artifactId>jstl-impl</artifactId>

      <version>1.2</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>javax.mail</groupId>

      <artifactId>mail</artifactId>

      <version>1.4.3</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>javax.xml</groupId>

      <artifactId>webservices-api-osgi</artifactId>

      <version>2.0.1</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.jboss.weld</groupId>

      <artifactId>weld-osgi-bundle</artifactId>

      <version>1.0.1-SP3</version>

      <scope>provided</scope>

    </dependency>

    <dependency>

      <groupId>org.glassfish.web</groupId>

      <artifactId>javax.servlet.jsp.jstl</artifactId>

      <version>1.2.1</version>

    </dependency>

    <dependency>

      <groupId>javax.servlet.jsp.jstl</groupId>

      <artifactId>javax.servlet.jsp.jstl-api</artifactId>

      <version>1.2.1</version>

    </dependency>

    <!-- junit 单元测试 -->  

        <dependency>  

            <groupId>junit</groupId>  

            <artifactId>junit</artifactId>  

            <version>${junit.version}</version>  

            <scope>test</scope>  

        </dependency>  

        <!-- spring -->  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-core</artifactId>  

            <version>${spring.version}</version>  

        </dependency>  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-beans</artifactId>  

            <version>${spring.version}</version>  

        </dependency>  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-context</artifactId>  

            <version>${spring.version}</version>  

        </dependency>  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-tx</artifactId>  

            <version>${spring.version}</version>  

        </dependency>  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-web</artifactId>  

            <version>${spring.version}</version>  

        </dependency>  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-test</artifactId>  

            <version>${spring.version}</version>  

            <scope>test</scope>  

        </dependency>  

        <!-- 使用SpringMVC需配置 -->  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-webmvc</artifactId>  

            <version>${spring.version}</version>  

        </dependency>  

        <!-- 关系型数据库整合时需配置 如hibernate jpa等 -->  

        <dependency>  

            <groupId>org.springframework</groupId>  

            <artifactId>spring-orm</artifactId>  

            <version>${spring.version}</version>  

        </dependency>  

        <!-- hibernate -->  

        <dependency>  

            <groupId>org.hibernate</groupId>  

            <artifactId>hibernate-core</artifactId>  

            <version>${hibernate.version}</version>  

        </dependency>  

        <dependency>  

            <groupId>org.hibernate</groupId>  

            <artifactId>hibernate-ehcache</artifactId>  

            <version>${hibernate.version}</version>  

        </dependency>  

        <!-- 二级缓存ehcache -->    

        <dependency>    

            <groupId>net.sf.ehcache</groupId>    

            <artifactId>ehcache</artifactId>    

            <version>${ehcache.version}</version>    

        </dependency>  

        <!-- log4j -->    

        <dependency>    

            <groupId>log4j</groupId>    

            <artifactId>log4j</artifactId>    

            <version>${log4j.version}</version>    

        </dependency>    

        <!-- mysql连接 -->    

        <dependency>    

            <groupId>mysql</groupId>    

            <artifactId>mysql-connector-java</artifactId>    

            <version>${mysql.version}</version>    

        </dependency>  

        <!-- 阿里巴巴数据源 -->  

        <dependency>  

            <groupId>com.alibaba</groupId>  

            <artifactId>druid</artifactId>  

            <version>${druid.version}</version>  

        </dependency>  

        <dependency>    

            <groupId>com.fasterxml.jackson.core</groupId>    

            <artifactId>jackson-annotations</artifactId>    

            <version>${jackson.version}</version>    

        </dependency>    

        <dependency>    

            <groupId>com.fasterxml.jackson.core</groupId>    

            <artifactId>jackson-core</artifactId>    

            <version>${jackson.version}</version>    

        </dependency>    

        <dependency>    

            <groupId>com.fasterxml.jackson.core</groupId>    

            <artifactId>jackson-databind</artifactId>    

            <version>${jackson.version}</version>    

        </dependency>    

        <!-- aop -->    

        <dependency>  

            <groupId>org.aspectj</groupId>  

            <artifactId>aspectjweaver</artifactId>  

            <version>${aspectjweaver.version}</version>  

        </dependency>  

        <!-- servlet -->  

        <dependency>  

            <groupId>javax.servlet</groupId>  

            <artifactId>servlet-api</artifactId>  

            <version>3.0-alpha-1</version>  

            <scope>provided</scope>  

        </dependency>  

        <dependency>  

            <groupId>javax.servlet</groupId>  

            <artifactId>jstl</artifactId>  

            <version>1.2</version>  

        </dependency>  

  </dependencies>

  <build>

    <sourceDirectory>src</sourceDirectory>

    <plugins>

      <plugin>

        <artifactId>maven-compiler-plugin</artifactId>

        <version>2.3.2</version>

        <configuration>

          <source>1.7</source>

          <target>1.7</target>

        </configuration>

      </plugin>

      <plugin>

        <artifactId>maven-war-plugin</artifactId>

        <version>2.2</version>

        <configuration>

          <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>

          <version>3.0</version>

          <failOnMissingWebXml>false</failOnMissingWebXml>

        </configuration>

      </plugin>

    </plugins>

  </build>

</project>

2.web.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_3_0.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>Person</display-name>

        <!-- 加载配置文件 -->  

        <context-param>  

            <param-name>contextConfigLocation</param-name>  

            <param-value>classpath:spring.xml,classpath:spring-hibernate.xml</param-value>  

        </context-param>  

        <!-- 中文过滤器 -->  

        <filter>  

            <filter-name>encodingFilter</filter-name>  

            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  

            <init-param>  

                <param-name>encoding</param-name>  

                <param-value>utf-8</param-value>  

            </init-param>  

            <init-param>  

                <param-name>forceEncoding</param-name>  

                <param-value>true</param-value>  

            </init-param>  

        </filter>  

        <filter-mapping>  

            <filter-name>encodingFilter</filter-name>  

            <url-pattern>/*</url-pattern>  

        </filter-mapping>  

        <!-- openSessionInView配置 作用是延迟session关闭到view层 -->  

        <filter>  

            <filter-name>openSessionInViewFilter</filter-name>  

            <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>  

            <init-param>  

                <param-name>singleSession</param-name>  

                <param-value>true</param-value>  

            </init-param>  

        </filter>  

        <!-- 监听servletContext,启动contextConfigLocation中的spring配置信息 -->  

        <listener>  

            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  

        </listener>  

        <!-- 防止spring内存溢出监听器 -->  

        <listener>  

            <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  

        </listener>  

        <servlet>  

            <description>spring mvc servlet</description>  

            <servlet-name>springmvc</servlet-name>  

            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

            <init-param>  

                <param-name>contextConfigLocation</param-name>  

                <!-- 此处配置的是SpringMVC的配置文件 -->  

                <param-value>classpath:spring-mvc.xml</param-value>  

            </init-param>  

            <load-on-startup>1</load-on-startup>  

        </servlet>  

        <servlet-mapping>  

            <servlet-name>springmvc</servlet-name>  

            <url-pattern>*.action</url-pattern>  

        </servlet-mapping>  

        <filter-mapping>  

            <filter-name>openSessionInViewFilter</filter-name>  

            <url-pattern>/*</url-pattern>  

        </filter-mapping>  

        <!-- druid数据源拦截配置,如果不需要druid提供的数据库日志,就可以直接注释下面的代码 -->  

        <filter>  

            <filter-name>DruidWebStatFilter</filter-name>  

            <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>  

            <init-param>  

                <param-name>exclusions</param-name>  

                <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>  

            </init-param>  

            <init-param>  

                <param-name>profileEnable</param-name>  

                <param-value>true</param-value>  

            </init-param>  

            <init-param>  

                <param-name>sessionStatEnable</param-name>  

                <param-value>true</param-value>  

            </init-param>  

            <init-param>  

                <param-name>principalSessionName</param-name>  

                <param-value>SESSION_SYS_USER</param-value>  

            </init-param>  

        </filter>  

        <filter-mapping>  

            <filter-name>DruidWebStatFilter</filter-name>  

            <url-pattern>/*</url-pattern>  

        </filter-mapping>  

        <servlet>  

            <servlet-name>DruidStatView</servlet-name>  

            <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  

            <init-param>  

                <param-name>resetEnable</param-name>  

                <param-value>true</param-value>  

            </init-param>  

            <init-param>  

                <param-name>loginUsername</param-name>  

                <param-value>gzyfkjDruid</param-value>  

            </init-param>  

            <init-param>  

                <param-name>loginPassword</param-name>  

                <param-value>[email protected]$$$</param-value>  

            </init-param>  

        </servlet>  

        <servlet-mapping>  

            <servlet-name>DruidStatView</servlet-name>  

            <url-pattern>/druid/*</url-pattern>  

        </servlet-mapping>  

        <!-- 配置session超时时间,单位分钟 -->  

        <session-config>  

            <session-timeout>30</session-timeout>  

        </session-config>  

        <welcome-file-list>  

            <welcome-file>/index.jsp</welcome-file>  

        </welcome-file-list>  

    </web-app> 

3.整合配置文件

Spring+SpringMVC+hibernate+maven配置文件

config.properties文件:

jdbc.url=jdbc:mysql:///ssh?useSSL=true&characterEncoding=UTF-8

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.username=root

jdbc.password=123456

#only mysql need

#hibernate config  

#hibernate.dialect = org.hibernate.dialect.MySQL5Dialect  

hibernate.show_sql = true  

hibernate.format_sql = true  

hibernate.hbm2ddl.auto = update  

hibernate.cache.use_second_level_cache = true  

hibernate.cache.use_query_cache = true  

hibernate.cache.region.factory_class = org.hibernate.cache.ehcache.EhCacheRegionFactory  

hibernate.cache.provider_configuration_file_resource_path =ehcache.xml

Spring整合hibernate文件:

<?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"    

        xsi:schemaLocation="    

            http://www.springframework.org/schema/beans     

            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd     

            http://www.springframework.org/schema/tx     

            http://www.springframework.org/schema/tx/spring-tx-4.3.xsd    

            http://www.springframework.org/schema/aop     

            http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">    

        <!-- 配置数据源 Druid -->   

        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"  

            init-method="init" destroy-method="close">  

            <!-- MySQL数据库配置 -->  

            <property name="url"  

                value="${jdbc.url}" />  

            <property name="username" value="${jdbc.username}" />  

            <property name="password" value="${jdbc.password}" />  

            <!-- SQL Server数据库配置 -->  

            <!-- <property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=yfkj"   

                /> <property name="username" value="sa" /> <property name="password" value="123456"   

                /> -->  

            <!-- Oracle数据库配置 -->  

            <!-- <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:yfkj"   

                /> <property name="username" value="SYSTEM" /> <property name="password"   

                value="SkyNet888999" /> -->  

            <!-- 配置初始化大小、最小、最大 -->  

            <property name="initialSize" value="1" />  

            <property name="minIdle" value="1" />  

            <property name="maxActive" value="20" />  

            <!-- 配置获取连接等待超时的时间 -->  

            <property name="maxWait" value="60000" />  

            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  

            <property name="timeBetweenEvictionRunsMillis" value="60000" />  

            <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  

            <property name="minEvictableIdleTimeMillis" value="300000" />  

            <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->  

            <property name="poolPreparedStatements" value="true" />  

            <property name="maxPoolPreparedStatementPerConnectionSize"  

                value="20" />  

            <!-- 配置监控统计拦截的filters -->  

            <property name="filters" value="stat,log4j,wall" />  

        </bean>  

        <!-- 配置hibernate的SessionFactory -->    

        <bean id="sessionFactory"    

            class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">    

            <!-- 注入数据源 相关信息看源码 -->    

            <property name="dataSource" ref="dataSource" />    

            <!-- hibernate配置信息 -->    

            <property name="hibernateProperties">    

                <props>    

                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>    

                    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>    

                    <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>    

                    <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>    

                    <!-- 开启二级缓存 ehcache -->    

                    <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>    

                    <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>    

                    <prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop>    

                    <prop key="hibernate.connection.autocommit">true</prop>    

                    <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.cache.provider_configuration_file_resource_path} </prop>   

                   <!--  <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop> -->

                </props>    

            </property>    

            <!-- 扫描hibernate注解配置的entity -->    

            <property name="packagesToScan" value="com.demo.entity" />    

        </bean>    

        <!-- <bean id="hibernateDao" class="com.demo.dao.HibernateDao">

        <property name="sessionFactory" ref="sessionFactory"></property>

        </bean> -->

        <!-- 配置事务管理器 -->    

        <bean id="transactionManager"    

            class="org.springframework.orm.hibernate4.HibernateTransactionManager">    

            <property name="sessionFactory" ref="sessionFactory" />    

        </bean>    

        <!-- 配置事务增强处理Bean,指定事务管理器 -->    

        <tx:advice id="transactionAdvice" transaction-manager="transactionManager">    

            <!-- 配置详细事务处理语义 -->    

            <tx:attributes>    

                <tx:method name="insert*" propagation="REQUIRED" />    

                <tx:method name="save*" propagation="REQUIRED" />    

                <tx:method name="update*" propagation="REQUIRED" />    

                <tx:method name="delete*" propagation="REQUIRED" />    

                <tx:method name="get*" propagation="SUPPORTS" read-only="true" />    

                <tx:method name="find*" propagation="SUPPORTS" read-only="true" />    

                <tx:method name="select*" propagation="SUPPORTS" read-only="true" />    

                <tx:method name="load*" propagation="SUPPORTS" read-only="true" />    

                <tx:method name="list*" propagation="SUPPORTS" read-only="true" />    

                <!-- 其他采用默认事务方式 -->    

                <tx:method name="*" />    

            </tx:attributes>    

        </tx:advice>    

        <!-- Spring aop事务管理 -->    

        <aop:config>    

            <!-- 配置切入点 -->    

            <aop:pointcut id="transactionPointcut"    

                expression="execution(* com.demo.service..*impl.*(..))" />    

            <!-- 指定在txAdvice切入点应用txAdvice事务增强处理 -->    

            <aop:advisor pointcut-ref="transactionPointcut"    

                advice-ref="transactionAdvice" />    

        </aop:config>  

        <!-- 使用annotation定义事务:如果没有用到注解事物~可以关闭 -->  

        <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />   

    </beans>  

Spring-mvc.xml文件:

<?xml version="1.0" encoding="UTF-8"?>  

<beans xmlns="http://www.springframework.org/schema/beans"  

    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"  

    xsi:schemaLocation="http://www.springframework.org/schema/beans     

            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd     

            http://www.springframework.org/schema/context     

            http://www.springframework.org/schema/context/spring-context-4.3.xsd     

            http://www.springframework.org/schema/mvc     

            http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">  

    <!-- 自动扫描@Controller注入为bean -->  

    <context:component-scan base-package="com.demo.controller" />  

    <!-- 以下为SpringMVC配置 -->  

    <mvc:annotation-driven>  

        <!-- 返回json数据,@response使用 -->  

        <mvc:message-converters register-defaults="true">  

            <bean  

                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  

                <property name="supportedMediaTypes">  

                    <list>  

                        <value>text/html;charset=UTF-8</value>  

                        <value>application/json;charset=UTF-8</value>  

                    </list>  

                </property>  

            </bean>  

        </mvc:message-converters>  

    </mvc:annotation-driven>  

    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->  

    <bean  

        class="org.springframework.web.servlet.view.InternalResourceViewResolver">  

        <property name="viewClass"  

            value="org.springframework.web.servlet.view.JstlView" />  

        <property name="prefix" value="/WEB-INF/pages/" />  

        <property name="suffix" value=".jsp" />  

    </bean>  

</beans>

继续阅读