Spring-MVC4 + JPA2 + MySql-5.5 + SLF4J + JBoss WildFly-8.1开发环境搭建

来源:互联网 发布:手机版淘宝卖家 编辑:程序博客网 时间:2024/06/05 09:36

由于面试被问到了Spring4,所以打算把过去Spring3的项目全部升级为Spring4。现将环境搭建过程记录在此。


首先使用Maven Archetype创建项目骨架,执行以下命令:

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.0 -DgroupId={你的groupId} -DartifactId={你的artifactId} -Dversion=1.0-SNAPSHOT

完成后会生成最基本的目录结构,和一个包含了JUnit的pom.xml。这显然是不够的。我们需要自行修改 pom.xml 添加所需依赖:

<properties><java-version>1.7</java-version><org.aspectj-version>1.7.3</org.aspectj-version><spring.version>4.0.1.RELEASE</spring.version><slf4jVersion>1.7.7</slf4jVersion></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- Spring dependencies --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</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-webmvc</artifactId><version>${spring.version}</version></dependency><!-- 支持文件上传 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><!-- JPA --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.hibernate.javax.persistence</groupId><artifactId>hibernate-jpa-2.0-api</artifactId><version>1.0.1.Final</version></dependency><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache-core</artifactId><version>2.6.8</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!-- hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.0.1.Final</version></dependency><!-- MySql JDBC Driver --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!-- AspectJ --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>${org.aspectj-version}</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2</version></dependency><!-- @Inject --><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency><!-- Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- JSON --><dependency><groupId>javax.json</groupId><artifactId>javax.json-api</artifactId><version>1.0</version></dependency><!-- SLF4j --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4jVersion}</version></dependency><!-- log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency></dependencies>

然后把 java版本改为1.7:(Spring4最低要求是1.6)

<build><finalName>shop</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><source>1.7</source><target>1.7</target><compilerArgument>-Xlint:all</compilerArgument><showWarnings>true</showWarnings><showDeprecation>true</showDeprecation></configuration></plugin></plugins></build>


创建如下图所示的目录结构:



下面是各个配置文件的完整内容。


通过 jboss-deployment-structure.xml 命令JBoss不要使用内置的Log系统:

<?xml version="1.0" encoding="UTF-8"?><jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"><deployment><exclude-subsystems><subsystem name="logging" /></exclude-subsystems></deployment></jboss-deployment-structure> 

通过 shop-ds.xml 在部署时动态向JBoss注册数据源:

<?xml version="1.0" encoding="UTF-8"?><datasources xmlns="http://www.jboss.org/ironjacamar/schema"><datasource jndi-name="java:jboss/datasources/shop"enabled="true" use-java-context="true" pool-name="codeschooldb"><connection-url>jdbc:mysql://localhost:3306/shop?characterEncoding=utf-8</connection-url><driver-class>com.mysql.jdbc.Driver</driver-class><driver>mysql</driver><security><user-name>root</user-name><password>111111</password></security></datasource></datasources> 

由于我们使用 Servet 3.0,所以web.xml也要相应的升级:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee           http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/root-context.xml</param-value></context-param><!-- spring --><servlet><servlet-name>appServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>appServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><session-config><session-timeout>15</session-timeout></session-config></web-app>

通过Spring配置文件 servlet-context.xml 配置JPA, Hibernate,数据源JNDI查找等内容:

<?xml version="1.0" encoding="UTF-8"?><beans:beans xmlns="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --><!-- Enables the Spring MVC @Controller programming model --><annotation-driven /><!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --><resources mapping="/resources/**" location="/resources/" /><!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --><beans:beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><beans:property name="prefix" value="/WEB-INF/views/" /><beans:property name="suffix" value=".jsp" /></beans:bean><!-- 容器管理的JPA --><beans:bean id="emf"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><beans:property name="dataSource" ref="dataSource" /><beans:property name="jpaVendorAdapter" ref="jpaAdapter" /><beans:property name="packagesToScan" value="cn.fh.shop.model" /><beans:property name="jpaPropertyMap"><beans:props><beans:prop key="hibernate.show_sql">true</beans:prop><beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop><beans:prop key="hibernate.format_sql">true</beans:prop><beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</beans:prop><!-- 开启L2 cache --><beans:prop key="hibernate.cache.use_second_level_cache">true</beans:prop></beans:props></beans:property></beans:bean><beans:bean id="jpaAdapter"class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"><beans:property name="database" value="MYSQL" /></beans:bean><jee:jndi-lookup id="dataSource" jndi-name="java:jboss/datasources/shop"resource-ref="true" /><beans:beanclass="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /><!-- 事务 --><beans:bean class="org.springframework.orm.jpa.JpaTransactionManager"id="transactionManager"><beans:property name="entityManagerFactory" ref="emf" /></beans:bean><!-- 文件上传 --><beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" ><beans:property name="maxUploadSize" value="100000" /></beans:bean><tx:annotation-driven /><context:component-scan base-package="cn.fh.shop" /></beans:beans>

src/main/resources/log4j.xml 配置如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><!-- Appenders --><appender name="console" class="org.apache.log4j.ConsoleAppender"><param name="Target" value="System.out" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p: %c - %m%n" /></layout></appender><!-- Application Loggers --><logger name="cn.fh.spring"><level value="info" /></logger><!-- 3rdparty Loggers --><logger name="org.springframework.core"><level value="info" /></logger><logger name="org.springframework.beans"><level value="info" /></logger><logger name="org.springframework.context"><level value="info" /></logger><logger name="org.springframework.web"><level value="info" /></logger><!-- Root Logger --><root><priority value="debug" /><appender-ref ref="console" /></root></log4j:configuration>

至此一切OK。执行 mvn clean install 构建工程,将 shop.war 复制到 JBoss 部署目录下即可。

1 0
原创粉丝点击