搭建 springMVC 框架

搭建的框架是包含 common(bean),data(DAO层),service层和controller层。

如下:


common(bean),data(DAO层),service和controller分别作为主pom 的module

<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>com.*****</groupId>
	<artifactId>*****</artifactId>
	<version>1.0.0</version>
	<packaging>pom</packaging>
	<description>需求管理平台</description>
	
	<modules>
		<module>***-common</module>
		<module>***-data</module>
		<module>***-service</module>
		<module>***-web</module>
	</modules>

	<developers>
		
	</developers>

	<properties>
		<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
		<junit.version>4.12</junit.version>
		<slf4j.log4j.version>1.7.21</slf4j.log4j.version>
		<mysql.connector.version>5.1.37</mysql.connector.version>
		<druid.version>1.0.28</druid.version>
		<mybatis.version>3.4.2</mybatis.version>
		<mybatis.spring.version>1.3.1</mybatis.spring.version>
		<taglibs.standard.version>1.1.2</taglibs.standard.version>
		<jstl.version>1.2</jstl.version>
		<jackson.version>2.5.4</jackson.version>
		<servlet.version>3.1.0</servlet.version>
		<spring.version>4.3.6.RELEASE</spring.version>
		<protostuff.version>1.0.12</protostuff.version>
		<commons.collections.version>3.2.2</commons.collections.version>
		<commons.fileupload.version>1.3.2</commons.fileupload.version>
		<commons.io.version>2.5</commons.io.version>
		<commons.codec.version>1.10</commons.codec.version>
		<commons.lang.version>2.6</commons.lang.version>
		<jsch.version>0.1.54</jsch.version>
		<gson.version>2.8.0</gson.version>
		<json.version>20160810</json.version>
		<json.lib.version>2.4</json.lib.version>
		<sonar.client.version>5.1</sonar.client.version>
		<okhttp.version>3.4.2</okhttp.version>
		<persistence.api.version>2.0.0.Final</persistence.api.version>
		<svnkit.version>1.3.5</svnkit.version>
		<dom4j.version>1.6</dom4j.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
		<isso-client.verion>2.0.18</isso-client.verion>
		<quartz.version>2.2.3</quartz.version>
		<snf.client.version>2.2.7</snf.client.version>
		<snf.sedis.version>1.1.8</snf.sedis.version>
		<hudson.cli.version>3.0.1</hudson.cli.version>
		<http.client.version>4.3.2</http.client.version>
		<quark.version>1.2.1</quark.version>
		<cupid.client.version>2.5.13</cupid.client.version>
		<aspectj.version>1.8.10</aspectj.version>
		<neptune.client.version>1.2.5</neptune.client.version>
		<cuckoo.version>1.0.6</cuckoo.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>com.tyr</groupId>
			<artifactId>tyr-client</artifactId>
			<version>0.0.7-SNAPSHOT</version>
		</dependency>

		<dependency>
			<groupId>com.*****</groupId>
			<artifactId>neptune-client</artifactId>
			<version>${neptune.client.version}</version>
			<classifier>jdk16</classifier>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>log4j-over-slf4j</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>commons-httpclient</groupId>
			<artifactId>commons-httpclient</artifactId>
			<version>3.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-pool2</artifactId>
			<version>2.0</version>
		</dependency>

		<!-- Unit Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>

		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-module-junit4</artifactId>
			<version>1.6.3</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-api-mockito</artifactId>
			<version>1.6.3</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.jayway.jsonpath</groupId>
			<artifactId>json-path</artifactId>
			<version>2.2.0</version>
			<scope>test</scope>
		</dependency>
		<!-- 1.Log -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${slf4j.log4j.version}</version>
		</dependency>

		<!-- 2.Database -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.connector.version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${druid.version}</version>
		</dependency>

		<!-- DAO: MyBatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${mybatis.spring.version}</version>
		</dependency>

		<!-- 3.Servlet web -->
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>${taglibs.standard.version}</version>
		</dependency>
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>${jstl.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>${servlet.version}</version>
		</dependency>

		<!-- 4.Spring -->
		<!-- 1)Spring core -->
		<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>
		<!-- 2)Spring DAO -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- 3)Spring web -->
		<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>
		<!-- 4)Spring test -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${aspectj.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aspectj.version}</version>
			<scope>runtime</scope>
		</dependency>
		<!-- Redis client:Jedis -->
		<dependency>
			<groupId>com.dyuproject.protostuff</groupId>
			<artifactId>protostuff-core</artifactId>
			<version>${protostuff.version}</version>
		</dependency>
		<dependency>
			<groupId>com.dyuproject.protostuff</groupId>
			<artifactId>protostuff-runtime</artifactId>
			<version>${protostuff.version}</version>
		</dependency>

		<!-- apache commons utils -->
		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>${commons.collections.version}</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>${commons.fileupload.version}</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>${commons.io.version}</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>${commons.codec.version}</version>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>${commons.lang.version}</version>
		</dependency>
		<dependency>
			<groupId>com.jcraft</groupId>
			<artifactId>jsch</artifactId>
			<version>${jsch.version}</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>${gson.version}</version>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>${json.version}</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.sonar</groupId>
			<artifactId>sonar-ws-client</artifactId>
			<version>${sonar.client.version}</version>
		</dependency>
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>${json.lib.version}</version>
		</dependency>

		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>okhttp</artifactId>
			<version>${okhttp.version}</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>okhttp-apache</artifactId>
			<version>${okhttp.version}</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>okhttp-testing-support</artifactId>
			<version>${okhttp.version}</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>okhttp-urlconnection</artifactId>
			<version>${okhttp.version}</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>okhttp-ws</artifactId>
			<version>${okhttp.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.persistence</groupId>
			<artifactId>persistence-api</artifactId>
			<version>${persistence.api.version}</version>
		</dependency>
		<dependency>
			<groupId>org.tmatesoft.svnkit</groupId>
			<artifactId>svnkit</artifactId>
			<version>${svnkit.version}</version>
		</dependency>
		<dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>${dom4j.version}</version>
		</dependency>

		<dependency>
			<groupId>com.suning.isso</groupId>
			<artifactId>isso-client</artifactId>
			<version>${isso-client.verion}</version>
		</dependency>

		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>${quartz.version}</version>
		</dependency>

		<dependency>
			<groupId>com.suning.framework</groupId>
			<artifactId>snf-redis-client</artifactId>
			<version>${snf.client.version}</version>
		</dependency>
		<dependency>
			<groupId>com.suning.framework</groupId>
			<artifactId>snf-sedis</artifactId>
			<version>${snf.sedis.version}</version>
		</dependency>

		<dependency>
			<groupId>org.eclipse.hudson</groupId>
			<artifactId>hudson-cli</artifactId>
			<version>${hudson.cli.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpcore</artifactId>
			<version>${http.client.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>${http.client.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>

		<dependency>
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<version>3.3</version>
		</dependency>

		<!--cuckoo -->
		<dependency>
			<groupId>com.suning.sncd</groupId>
			<artifactId>cuckoo-client</artifactId>
			<version>${cuckoo.version}</version>
		</dependency>
	</dependencies>
	<!-- 参数文件 -->
	<profiles>
		<profile>
			<id>dev</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<filters>
					<filter>../vars/vars.dev.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>sit</id>
			<build>
				<filters>
					<filter>../vars/vars.sit.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>pre</id>
			<build>
				<filters>
					<filter>../vars/vars.pre.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>prod</id>
			<build>
				<filters>
					<filter>../vars/vars.prod.properties</filter>
				</filters>
			</build>
		</profile>
	</profiles>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<compilerArgument>-Xlint:all</compilerArgument>
					<showWarnings>true</showWarnings>
					<showDeprecation>true</showDeprecation>
					<encoding>${maven.compiler.encoding}</encoding>
					<compilerArgument>-parameters</compilerArgument>
					<testCompilerArgument>-parameters</testCompilerArgument>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<warName>${project.artifactId}-${maven.build.timestamp}</warName>
					<webResources>
						<resource>
							<directory>src/main/webapp</directory>
							<filtering>true</filtering>
							<includes>
								<include>**/*.html</include>
								<include>**/*.js</include>
								<include>**/*.css</include>
							</includes>
						</resource>
					</webResources>
				</configuration>
			</plugin>
		</plugins>
		<!-- 配置资源文件的位置 -->
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
				<!-- 是否替换资源中的属性 -->
				<filtering>true</filtering>
			</resource>
			<resource>
				<directory>${basedir}/src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<directory>${basedir}/src/test/resources</directory>
			</testResource>
		</testResources>
	</build>
</project>

接着是web  controller层


里面有spring相关的xml 和 WEB-INF文件夹

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"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">

	<display-name>Product Requirement Management Service Platform</display-name>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring.xml,classpath:spring-mybatis.xml</param-value>
	</context-param>

	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/classes/log4j.properties</param-value>
	</context-param>
	<context-param>
		<param-name>log4jRefreshInterval</param-name>
		<param-value>60000</param-value>
	</context-param>

	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

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

	<!-- (passport)ids config Start -->
	<context-param>
		<param-name>idsConfigFilePath</param-name>
		<param-value>/WEB-INF/classes/conf/passport/ids-config.xml</param-value>
	</context-param>

	<context-param>
		<param-name>idsAccessPolicyFilePath</param-name>
		<param-value>/WEB-INF/classes/conf/passport/ids-accessPolicy.xml</param-value>
	</context-param>

	<filter>
		<filter-name>authenticationFilter</filter-name>
		<filter-class>com.suning.ids.client.AuthenticationFilter</filter-class>
		<init-param>
			<param-name>authUrlPattern</param-name>
			<param-value>/auth</param-value>
		</init-param>

		<init-param>
			<param-name>authStatusUrlPattern</param-name>
			<param-value>/authStatus</param-value>
		</init-param>

		<init-param>
			<param-name>popupLoginSuccessUrlPattern</param-name>
			<param-value>/popupLoginSuccess</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>authenticationFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>authenticationServlet</servlet-name>
		<servlet-class>com.suning.ids.client.AuthenticationServlet</servlet-class>
		<load-on-startup>3</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>authenticationServlet</servlet-name>
		<url-pattern>/auth</url-pattern>
	</servlet-mapping>

	<servlet>
		<servlet-name>authStatusServlet</servlet-name>
		<servlet-class>com.suning.ids.client.AuthStatusServlet</servlet-class>
		<load-on-startup>3</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>authStatusServlet</servlet-name>
		<url-pattern>/authStatus</url-pattern>
	</servlet-mapping>

	<servlet>
		<servlet-name>popupLoginSuccessServlet</servlet-name>
		<servlet-class>com.suning.ids.client.PopupLoginSuccessServlet</servlet-class>
		<load-on-startup>3</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>popupLoginSuccessServlet</servlet-name>
		<url-pattern>/popupLoginSuccess</url-pattern>
	</servlet-mapping>
	<!--(passport)ids config End -->

	<!-- 防内存溢出监听 -->
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>

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

	<servlet>
		<servlet-name>volcanoDispatcher</servlet-name>
		<servlet-class>com.suning.volcano.web.servlet.VolcanoDispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<!-- <async-supported>true</async-supported> -->
	</servlet>
	<servlet-mapping>
		<servlet-name>volcanoDispatcher</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
</web-app>

jboss-web.xml  comtext-root一般是工程名

<?xml version="1.0" encoding="UTF-8"?>
    <jboss-web>
       <context-root>/******</context-root>
    </jboss-web>

jboss-deployment-structure xml:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure
    xmlns="urn:jboss:deployment-structure:1.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <deployment>
        <exclusions>
            <module name="org.apache.log4j"></module>
            <module name="org.slf4j"></module>
            <module name="org.slf4j.impl"></module>
        </exclusions>
    </deployment>
</jboss-deployment-structure>

spring.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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:task="http://www.springframework.org/schema/task"
	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/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
	http://www.springframework.org/schema/util 
	http://www.springframework.org/schema/util/spring-util.xsd
	http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-3.0.xsd">

	<context:property-placeholder location="classpath:config.properties" />

	<!-- autowire -->
	<context:component-scan base-package="com.volcano.data" />
	<context:component-scan base-package="com.volcano.service" />
	<context:component-scan base-package="com.volcano.web" />
	<context:component-scan base-package="com..volcano.common.aop" />
	<context:component-scan base-package="com.cupid.client" />
	<task:annotation-driven/>

	<util:properties id="p" location="classpath:config.properties"/>
	
	<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">  
    	<!-- 核心线程数  -->  
    	<property name="corePoolSize" value="10" />  
    	<!-- 最大线程数 -->  
    	<property name="maxPoolSize" value="50" />  
    	<!-- 队列最大长度 >=mainExecutor.maxSize -->  
    	<property name="queueCapacity" value="1000" />  
    	<!-- 线程池维护线程所允许的空闲时间 -->  
    	<property name="keepAliveSeconds" value="300" />  
    	<!-- 线程池对拒绝任务(无线程可用)的处理策略 -->  
    	<property name="rejectedExecutionHandler">  
   	        <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />  
        </property>  
    </bean>
    
    <bean id="asacSendEntityRoleExecutor" class="com.suning.cupid.client.mq.AsacSendEntityRoleExecutor">  
    	<property name="taskExecutor" ref="taskExecutor" />   
    </bean>

</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"
	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/context
	http://www.springframework.org/schema/context/spring-context-4.3.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
	http://www.springframework.org/schema/mvc
	http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

	<context:component-scan base-package="com.suning.volcano.web" />

	<context:component-scan base-package="com.suning.devops.framework.web.controller" />

	<context:component-scan base-package="com.suning.cupid.client" />

	<aop:aspectj-autoproxy proxy-target-class="true" />
	
	<!-- 视图映射设定 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/"></property>
		<property name="suffix" value=".html"></property>
	</bean>
	
	<!-- 处理静态资源 -->
	<mvc:default-servlet-handler />
	<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" conversion-service="conversionService"/>
	<bean id="conversionService"
		 class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	 </bean>
	<bean id="contentNegotiationManager"
		class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
		<property name="favorPathExtension" value="false" />
		<property name="favorParameter" value="false" />
		<property name="ignoreAcceptHeader" value="false" />
		<property name="mediaTypes">
			<value>
				atom=application/atom+xml
				html=text/html
				json=application/json
				*=*/*
			</value>
		</property>
	</bean>

	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller -->
			<mvc:mapping path="/**" />
			<bean class="com.suning.cupid.client.interceptor.PermissionFireWall">
				<property name="whitelistPathMatcher" value="${permFirewall.whitelist.pathMatcher}"></property>
				<property name="authorityPathMatcher" value="${permFirewall.authority.pathMatcher}"></property>
			</bean>
		</mvc:interceptor>
	</mvc:interceptors>
</beans>

spring-mybatis.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" xmlns:jee="http://www.springframework.org/schema/jee"
	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
	http://www.springframework.org/schema/jee 
	http://www.springframework.org/schema/jee/spring-jee-4.3.xsd">

	<!-- uranus data source -->
	<jee:jndi-lookup id="dataSource" lookup-on-startup="false"
		proxy-interface="javax.sql.DataSource" jndi-name="${volcano.jndi.database}" />

	<!-- myBatis文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
		<property name="mapperLocations">
			<array>
				<value>classpath:com/suning/volcano/data/database/*/impl/*.xml</value>
				<value>classpath:com/suning/volcano/data/database/**/impl/*.xml</value>
				<value>classpath:com/suning/cupid/client/dao/database/impl/*.xml</value>
			</array>
		</property>
		<property name="plugins">
			<array>
				<ref bean="PaginationInterceptor" />
			</array>
		</property>
	</bean>

	<bean id="PaginationInterceptor" class="com.suning.devops.framework.mybatis.plugins.PaginationInterceptor"/>
	<bean id="sqlSessionTemplate"  class="org.mybatis.spring.SqlSessionTemplate"> 
		<constructor-arg index="0" ref="sqlSessionFactory" />  
    </bean>

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.suning.volcano.data.database,com.suning.cupid.client.dao.database" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>
	
	<!-- 配置事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 注解方式配置事务 -->
	<tx:annotation-driven transaction-manager="transactionManager" />

</beans>

然后common 作为 data 的dependecy,data作为service的dependecy,依次类推

<dependencies>
		<dependency>
			<groupId>com....</groupId>
			<artifactId>volcano-data</artifactId>
			<version>1.0.0</version>
		</dependency>
	</dependencies>
整个mvc框架搭建完成。





猜你喜欢

转载自blog.csdn.net/lxlmycsdnfree/article/details/80236286