搭建的框架是包含 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框架搭建完成。