Maven搭建SpringMvc+Spring+Hibernate框架

来源:互联网 发布:mac ext4 读写 编辑:程序博客网 时间:2024/05/21 06:55

假设你已经在Myeclipse上面创建好啦一个Maven项目,现在我们开始往pom.xml里面新增jar的配置。

<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>yfkj.gz</groupId><artifactId>task</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>4.3.5.RELEASE</spring.version><hibernate.version>5.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.10</aspectjweaver.version><webVersion>3.0</webVersion></properties><dependencies><!-- 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><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>
我们来看看项目的结构图:

下面开始各种框架的配置文件

数据库config.properties的配置:

url.driver=com.mysql.jdbc.Driverurl.jdbc=jdbc:mysql://192.168.1.150:3306/wms?useUnicode=true&characterEncoding=UTF-8url.name=****url.pass=****#hibernate confighibernate.dialect = org.hibernate.dialect.MySQLDialecthibernate.show_sql = truehibernate.format_sql = truehibernate.hbm2ddl.auto = updatehibernate.cache.use_second_level_cache = truehibernate.cache.use_query_cache = truehibernate.cache.region.factory_class = org.hibernate.cache.ehcache.EhCacheRegionFactoryhibernate.cache.provider_configuration_file_resource_path =ehcache.xml
缓存配置文件ehcache.xml:

<?xml version="1.0" encoding="UTF-8"?>  <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">      <diskStore path="java.io.tmpdir/ehcache" />      <!-- DefaultCache setting. -->       <defaultCache              maxElementsInMemory="1000"              eternal="false"              timeToIdleSeconds="120"              timeToLiveSeconds="120"              maxElementsOnDisk="1000000"              overflowToDisk="true"               memoryStoreEvictionPolicy="LRU">                    </defaultCache>     </ehcache> 
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: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">      <!-- 加载配置文件 -->            <context:property-placeholder location="classpath:config.properties"/>      <!-- 扫描service自动注入为bean -->      <context:component-scan base-package="yfkj.gz.task.service.impl,yfkj.gz.task.dao.impl" />    </beans>
spring-hibernate.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: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="${url.jdbc}" /><property name="username" value="${url.name}" /><property name="password" value="${url.pass}" /><!-- 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.hibernate5.LocalSessionFactoryBean">          <!-- 注入数据源 相关信息看源码 -->          <property name="dataSource" ref="dataSource" />          <!-- hibernate配置信息 -->          <property name="hibernateProperties">              <props>                  <prop key="hibernate.dialect">${hibernate.dialect}</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.cache.provider_configuration_file_resource_path">${hibernate.cache.provider_configuration_file_resource_path}                  </prop>              </props>          </property>          <!-- 扫描hibernate注解配置的entity -->          <property name="packagesToScan" value="yfkj.gz.task.entity" />      </bean>        <!-- 配置事务管理器 -->      <bean id="transactionManager"          class="org.springframework.orm.hibernate5.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="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="*" />            </tx:attributes>      </tx:advice>        <!-- Spring aop事务管理 -->      <aop:config>          <!-- 配置切入点 -->          <aop:pointcut id="transactionPointcut"              expression="execution(* yfkj.gz.task.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="yfkj.gz.task.controller" /><!-- 以下为SpringMVC配置 --><mvc:annotation-driven><!-- 返回json数据,@response使用 --><mvc:message-converters register-defaults="true"><beanclass="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><!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --><beanclass="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>  
最后是我们的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"><!-- 加载配置文件 --><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.hibernate5.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>gzyfkj@Druid2016$$$</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>

源码地址:https://git.oschina.net/gzsjd/task






0 0