一、新建一个Maven项目,建立父项目。html
二、建立子项目模块java
三、建立javaWeb项目mysql
四、建立后的项目目录结构web
五、Maven文件配置spring
<?xml version="1.0" encoding="UTF-8"?> <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"> <!--声明项目描述符遵循哪个POM模型版本。模型自己的版本不多改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其余模型变动的时候,确保稳定性。--> <modelVersion>4.0.0</modelVersion> <!--项目的全球惟一标识符,一般使用全限定的包名区分该项目和其余项目。而且构建时生成的路径也是由今生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app--> <groupId>com.lovo</groupId> <!-- 构件的标识符,它和group ID一块儿惟一标识一个构件。换句话说,你不能有两个不一样的项目拥有一样的artifact ID和groupID; 在某个 特定的group ID下,artifact ID也必须是惟一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。--> <artifactId>parent</artifactId> <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号--> <version>0.0.1-SNAPSHOT</version> <!--项目产生的构件类型,例如jar、war、ear、pom。插件能够建立他们本身的构件类型,因此前面列的不是所有构件类型--> <packaging>pom</packaging> <!--项目的名称, Maven产生的文档用--> <name>${project.artifactId}</name> <!-- 描述 --> <description>Spring SpringMVC Mybatis Project</description> <!-- compiler插件能解决: 1:maven 2.1默认用jdk 1.3来编译,maven 3 貌似是用jdk 1.5,若是项目用的jdk 1.6也会有问题,compiler插件能够指定JDK版本为1.6。 2:windows默认使用GBK编码,java项目常常编码为utf8,也须要在compiler插件中指出,不然中文乱码可能会出现编译错误。 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <!-- 设置JDK版本1.8 --> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <!--模块(有时称做子项目) 被构建成项目的一部分。列出的每一个模块元素是指向该模块的目录的相对路径--> <modules> <module>soncore</module> <module>sonstore</module> <module>sonutils</module> <module>admin</module> </modules> <properties> <!-- Maven 编译使用的字符集编码 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- jar包版本 --> <slf4j.version>1.7.12</slf4j.version> </properties> <dependencies> <!-- slf4j日志包 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> </dependencies> </project>
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!--声明项目描述符遵循哪个POM模型版本。模型自己的版本不多改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其余模型变动的时候,确保稳定性。--> <modelVersion>4.0.0</modelVersion> <!--父项目的坐标。若是项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。--> <parent> <!--被继承的父项目的全球惟一标识符--> <groupId>com.lovo</groupId> <!--被继承的父项目的构件标识符--> <artifactId>parent</artifactId> <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号--> <version>0.0.1-SNAPSHOT</version> </parent> <!-- 构件的标识符,它和group ID一块儿惟一标识一个构件。换句话说,你不能有两个不一样的项目拥有一样的artifact ID和groupID; 在某个 特定的group ID下,artifact ID也必须是惟一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。--> <artifactId>soncore</artifactId> <!--项目的名称, Maven产生的文档用--> <name>${project.artifactId}</name> <!--被继承的父项目的版本--> <version>${project.parent.version}</version> <!-- 描述 --> <description>parent project soncore code </description> <properties> <!-- Maven 编译使用的字符集编码 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- jar包版本 --> <spring.version>4.2.6.RELEASE</spring.version> <aspectj.version>1.8.9</aspectj.version> <mybatis.version>3.4.0</mybatis.version> <mybatis-spring.version>1.3.0</mybatis-spring.version> <mysql.version>5.1.38</mysql.version> <fastjson.version>1.2.12</fastjson.version> <base64.version>2.3.9</base64.version> </properties> <!--构建项目须要的信息--> <build> <!--这个元素描述了项目相关的全部资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。--> <!-- 加上这个能够保证maven打包是把这些资源文件都打到war包中 --> <resources> <!--这个元素描述了项目相关或测试相关的全部资源路径--> <resource> <!--描述存放资源的目录,该路径相对POM路径--> <directory>src/main/java</directory> <!--包含的模式列表,例如**/*.xml.--> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。--> <filtering>true</filtering> </resource> </resources> </build> <dependencies> <!-- 必须的不解释,面向切面编程jar包 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> <!-- Spring相关包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</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-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</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-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.19</version> </dependency> <!-- 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> <!-- mysql相关包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- fastjson相关包 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <!-- Base64相关包 --> <dependency> <groupId>net.iharder</groupId> <artifactId>base64</artifactId> <version>${base64.version}</version> </dependency> </dependencies> </project>
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!--声明项目描述符遵循哪个POM模型版本。模型自己的版本不多改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其余模型变动的时候,确保稳定性。--> <modelVersion>4.0.0</modelVersion> <!--父项目的坐标。若是项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。--> <parent> <!--被继承的父项目的全球惟一标识符--> <groupId>com.lovo</groupId> <!--被继承的父项目的构件标识符--> <artifactId>parent</artifactId> <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号--> <version>0.0.1-SNAPSHOT</version> </parent> <!-- 构件的标识符,它和group ID一块儿惟一标识一个构件。换句话说,你不能有两个不一样的项目拥有一样的artifact ID和groupID; 在某个 特定的group ID下,artifact ID也必须是惟一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。--> <artifactId>sonutils</artifactId> <!--项目的名称, Maven产生的文档用--> <name>${project.artifactId}</name> <!-- 描述 --> <description>parent project sontils code</description> <!--被继承的父项目的版本--> <version>${project.parent.version}</version> <!-- Maven 编译使用的字符集编码 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--项目引入插件所须要的额外依赖--> <dependencies> <!-- 依赖ssmcore --> <dependency> <groupId>com.lovo</groupId> <artifactId>soncore</artifactId> <version>${project.parent.version}</version> </dependency> <!-- HttpComponents 也就是之前的httpclient项目,能够用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,而且它支持 HTTP 协议最新的版本和建议 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> </dependencies> </project>
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!--声明项目描述符遵循哪个POM模型版本。模型自己的版本不多改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其余模型变动的时候,确保稳定性。--> <modelVersion>4.0.0</modelVersion> <!--父项目的坐标。若是项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。--> <parent> <!--被继承的父项目的全球惟一标识符--> <groupId>com.lovo</groupId> <!--被继承的父项目的构件标识符--> <artifactId>parent</artifactId> <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号--> <version>0.0.1-SNAPSHOT</version> </parent> <!-- 构件的标识符,它和group ID一块儿惟一标识一个构件。换句话说,你不能有两个不一样的项目拥有一样的artifact ID和groupID; 在某个 特定的group ID下,artifact ID也必须是惟一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。--> <artifactId>sonstore</artifactId> <!--项目的名称, Maven产生的文档用--> <name>soncore</name> <!-- 描述 --> <description>parent project sonstore code</description> <!--项目主页的URL, Maven产生的文档用--> <url>http://maven.apache.org</url> <!-- Maven 编译使用的字符集编码 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--项目引入插件所须要的额外依赖--> <dependencies> <!-- 依赖ssmutils --> <dependency> <groupId>com.lovo</groupId> <artifactId>sonutils</artifactId> <version>${project.parent.version}</version> </dependency> </dependencies> </project>
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!--声明项目描述符遵循哪个POM模型版本。模型自己的版本不多改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其余模型变动的时候,确保稳定性。--> <modelVersion>4.0.0</modelVersion> <!--父项目的坐标。若是项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。--> <parent> <!--被继承的父项目的全球惟一标识符--> <groupId>com.lovo</groupId> <!--被继承的父项目的构件标识符--> <artifactId>parent</artifactId> <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号--> <version>0.0.1-SNAPSHOT</version> </parent> <!-- 构件的标识符,它和group ID一块儿惟一标识一个构件。换句话说,你不能有两个不一样的项目拥有一样的artifact ID和groupID; 在某个 特定的group ID下,artifact ID也必须是惟一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。--> <artifactId>admin</artifactId> <!--项目产生的构件类型,例如jar、war、ear、pom。插件能够建立他们本身的构件类型,因此前面列的不是所有构件类型--> <packaging>war</packaging> <name>admin Webapp</name> <url>http://maven.apache.org</url> <build> <!-- maven打包后的项目名 --> <finalName>admin</finalName> <!-- 加上这个能够保证maven打包是把这些资源文件都打到war包中 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> <properties> <!-- jar包版本 --> <servlet.version>4.0.0-b01</servlet.version> <druid.version>1.0.20</druid.version> <commons-io.version>2.4</commons-io.version> <commons-fileupload.version>1.3.1</commons-fileupload.version> <jackson.version>2.7.4</jackson.version> <ehcache.version>2.10.2</ehcache.version> <validator.version>5.2.3.Final</validator.version> <ehcache.jgroupsreplication.version>1.7</ehcache.jgroupsreplication.version> </properties> <!-- 项目基础依赖包配置 --> <dependencies> <!-- 系统其余模块 --> <dependency> <groupId>com.lovo</groupId> <artifactId>soncore</artifactId> <version>${project.parent.version}</version> </dependency> <dependency> <groupId>com.lovo</groupId> <artifactId>sonutils</artifactId> <version>${project.parent.version}</version> </dependency> <dependency> <groupId>com.lovo</groupId> <artifactId>sonstore</artifactId> <version>${project.parent.version}</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version> </dependency> <!-- druid相关包 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> <!-- commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- ehcache --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>${ehcache.version}</version> </dependency> <!-- jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!-- 校验 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>${validator.version}</version> </dependency> <!-- 集群 --> <!--<dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-jgroupsreplication</artifactId> <version>${ehcache.jgroupsreplication.version}</version> </dependency> --> </dependencies> </project>
六、Spring SpringMVC Mybatis框架文件配置sql
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd"> <!-- 配置须要交给spring扫描管理的包,通常是包括整个项目的java文件的父包(由context提供) --> <context:component-scan base-package="org.system" /> <!-- 属性文件读入,用于加密数据库配置文件 --> <bean id="propertyConfigurer" class="org.core.encrypt.DBConfigurer"> <property name="locations"> <list> <value>classpath:conf.properties</value> </list> </property> </bean> <!-- 配置须要交给spring扫描管理的文件,通常是项目的配置文件(由context提供) --> <context:property-placeholder location="classpath:conf.properties" /> <!-- 配置数据源 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="${url}" /> <!-- 数据库链接用户名 --> <property name="username" value="${username}" /> <!-- 数据库链接密码 --> <property name="password" value="${password}" /> <!-- 初始化链接大小 --> <property name="initialSize" value="2"></property> <!-- 链接池最大数量 --> <property name="maxActive" value="20"></property> <!-- 链接池最大空闲 ,对象池中对象最大个数--> <!-- <property name="maxIdle" value="60000"></property> --> <!-- 链接池最小空闲,对象池中对象最小个数 --> <property name="minIdle" value="2"></property> <!-- 获取链接最大等待时间,单位为 ms, 超过期间会丟出错误信息 --> <property name="maxWait" value="60000"></property> <!-- 每多少毫秒检测空闲链接超过10分钟的链接; 失效检查线程运行时间间隔,若是小于等于0,不会启动检查线程,默认-1--> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 链接池中链接,在时间段内一直空闲, 被逐出链接池的时间 (默认为30分钟,能够适当作调整,须要和后端服务端的策略配置相关) ; 大于0 ,进行链接空闲时间判断,或为0,对空闲的链接不进行验证;默认30分钟 --> <property name="minEvictableIdleTimeMillis" value="25200000" /> <!-- 超过期间限制,回收没有用(废弃)的链接(默认为 300秒,调整为180); --> <property name="removeAbandonedTimeout" value="1800" /> </bean> <!-- 配置sqlSessionFactory(由mybatis-spring.jar提供支持) --> <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 配置数据源 --> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:configuration.xml" /> <!-- 配置拦截器用于Mybatis分页和总数查询,只实现Mysql --> <property name="plugins" ref="PaginationInterceptor" /> </bean> <!-- Mybatis分页拦截器 --> <bean name="PaginationInterceptor" class="org.core.intercept.PaginationInterceptor" /> <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.system.mapper..*" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> <!-- 支持缓存注解 --> <cache:annotation-driven cache-manager="cacheManager" /> <!-- Spring提供的基于的Ehcache实现的缓存管理器 --> <bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml" /> </bean> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager" ref="ehcacheManager" /> </bean> <!-- 支持注解事务模式 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> <!-- 事务管理 --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置声明式事务 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="insert*" propagation="REQUIRED" read-only="false" /> <tx:method name="delete*" propagation="REQUIRED" read-only="false" /> <tx:method name="update*" propagation="REQUIRED" read-only="false" /> <tx:method name="get*" propagation="SUPPORTS" /> </tx:attributes> </tx:advice> <!-- 配置该声明式事务规则用于的切入点 步骤: 1.配置切入点 2.应用该声明式事务规则 --> <aop:config proxy-target-class="true" expose-proxy="true"> <!-- 配置切入点 --> <aop:pointcut id="transaction_pointcut" expression="execution(* org.system.service.impl..*.*(..))" /> <!-- 应用该声明式事务规则 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="transaction_pointcut" /> </aop:config> <!-- 异常拦截器 --> <bean id="exceptionHandler" class="org.system.exception.MyExceptionResolver" /> </beans>
#数据库链接
driver=com.mysql.jdbc.Driver
#本机链接
url=5BiJrAunhbp4C6R9HY+UQZca6/Y+XPBCNv95/EzYAmjeJzpWpDD3ac0D2WtX+4UbeHW7DCcv755VyGJfUylG1DZfbpB4tbaTpnYigXCccc9FefU
#数据库帐号 密码
username=Y0Z2wmLw+BM=
password=Y0Z2wmLw+BM=
#文件服务器配置
#file.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC1FOh0jnud2NK+z2gemMYlVb36LsAOnEMs855NUR4OZd9k5kiWdmaifL8li6DaVyP/pMpnVdK1fymt2UzSejtswCDG
#file.account=admin
#file.password=123456
#开发环境
#file.url=
#云端环境
#file.url=
#HIS服务器配置
#his.publicKey=
#his.account=admin
#his.password=123456
#开发环境
#his.url=
#云端环境
#his.url=
#语音服务器配置
#phone.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC1FOh0jnud2NK+z2
#phone.account=admin
#phone.password=123456
#phone.url=
#微信服务器配置
#测试
#wechat.url=
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描要自动管理的包,使SpringMVC认为包下用了@Controller 注解的类是控制器 --> <context:component-scan base-package="org.system.controller" /> <!-- 添加注解驱动,扩充了注解驱动,能够将请求参数绑定到控制器参数 --> <mvc:annotation-driven enable-matrix-variables="true" /> <!-- 静态资源处理,静态资源文件路径设置 --> <mvc:resources location="/styles/" mapping="/styles/.**" /> <mvc:resources location="/images/" mapping="/images/.**" /> <mvc:resources location="/plugins/" mapping="/plugins/.**" /> <mvc:resources location="/scripts/" mapping="/scripts/.**" /> <mvc:resources location="/html/" mapping="/html/.**" /> <mvc:resources location="/index.html" mapping="/index.html" /> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 --> </list> </property> </bean> <!-- 配置文件上传,若是没有使用文件上传能够不用配置,固然若是不配,那么配置文件中也没必要引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960" /> <!-- 启用是为了推迟文件解析,以便捕获文件大小异常 --> <property name="resolveLazily" value="true"/> </bean> <!-- 定义跳转的文件的先后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置个人理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/" /> <property name="suffix" value=".html" /> </bean> <!-- 校验拦截器 --> <bean id="validInterceptor" class="org.system.intercept.ValidInterceptor"></bean> <!-- 配置AOP切点 只拦截Controltroller --> <aop:config> <!--切入点 --> <aop:pointcut id="validPoint" expression="execution(public * org.system.controller.impl..*.*(..))" /> <!--在该切入点使用自定义拦截器 --> <aop:advisor pointcut-ref="validPoint" advice-ref="validInterceptor" /> </aop:config> <!-- 导入其余配置文件 --> <import resource="/org/system/config/*.xml" /> </beans>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL MAP Config 3.1//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="callSettersOnNulls" value="true"/> </settings> </configuration>
#定义根级别
log4j.rootLogger = ERROR,info,warn,error,stdout
#定义项目输出日志级别
log4j.logger.org.system = DEBUG
log4j.logger.org.core = INFO
log4j.logger.org.utils = INFO
log4j.logger.org.springframework.web.servlet.mvc = WARN
#控制台输出 生成阶段注释
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{MM-dd HH:mm:ss}-[%p] [%c{3}] %m%n
###info级别输出
#设置日志输出类型为天天产生一个日志文件
log4j.appender.info = org.apache.log4j.DailyRollingFileAppender
#指定输出目录
log4j.appender.info.File = ${catalina.home}/logs/${webapp.root}/admin/info.log
#默认值是true,即将消息追加到指定文件中,false指将消息覆盖指定的文件内容。
log4j.appender.info.Append = true
#指定日志消息的输出最低级别,此处设置为INFO,当程序出现错误日志时也会输出到此日志文件中
log4j.appender.info.Threshold = INFO
#设置输出端的布局类型为能够灵活地指定布局模式
log4j.appender.info.layout = org.apache.log4j.PatternLayout
#指定打印信息的具体格式
log4j.appender.info.layout.ConversionPattern = %-d{MM-dd HH:mm:ss}-[%p] [%c{3}] %m%n
#指定天天产生一个文件
log4j.appender.info.datePattern='.'yyyy-MM-dd
#定制过滤器 只过滤INFO级别
log4j.appender.info.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.info.filter.infoFilter.LevelMin=INFO
log4j.appender.info.filter.infoFilter.LevelMax=INFO
###warn级别输出
log4j.appender.warn = org.apache.log4j.DailyRollingFileAppender
log4j.appender.warn.File = ${catalina.home}/logs/${webapp.root}/admin/warn.log
log4j.appender.warn.Append = true
log4j.appender.warn.Threshold = warn
log4j.appender.warn.layout = org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern = %-d{MM-dd HH:mm:ss}-[%p] [%c{3}] %m%n
log4j.appender.warn.datePattern='.'yyyy-MM-dd
#定制过滤器 只过滤warn级别
log4j.appender.warn.filter.warnFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.warn.filter.warnFilter.LevelMin=WARN
log4j.appender.warn.filter.warnFilter.LevelMax=WARN
###error级别输出
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File = ${catalina.home}/logs/${webapp.root}/admin/error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %-d{MM-dd HH:mm:ss}-[%p] [%c{3}] %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
#定制过滤器 只过滤ERROR级别
log4j.appender.error.filter.errorFilter=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.error.filter.errorFilter.LevelMin=ERROR
log4j.appender.error.filter.errorFilter.LevelMax=ERROR
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <!--timeToIdleSeconds 当缓存闲置n秒后销毁 --> <!--timeToLiveSeconds 当缓存存活n秒后销毁 --> <!-- 缓存配置 name:缓存名称。 maxElementsInMemory:缓存最大个数。 eternal:对象是否永久有效,一但设置了,timeout将不起做用。 timeToIdleSeconds:设置对象在失效前的容许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。 timeToLiveSeconds:设置对象在失效前容许存活时间(单位:秒)。最大时间介于建立时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。 overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。 diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每一个Cache都应该有本身的一个缓冲区。 maxElementsOnDisk:硬盘最大缓存个数。 diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false. diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。 memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你能够设置为FIFO(先进先出)或是LFU(较少使用)。 clearOnFlush:内存数量最大时是否清除。 --> <diskStore path="java.io.tmpdir" /> <!-- <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" properties="connect=TCP(bind_port=50062): TCPPING(initial_hosts= 192.168.1.16[50061], 192.168.1.16[50062]; port_range=1;timeout=5000;num_initial_members=2) MERGE2(min_interval=3000;max_interval=5000): FD_ALL(interval=5000;timeout=20000): FD(timeout=3000;max_tries=3;): VERIFY_SUSPECT(timeout=1500): pbcast.NAKACK(retransmit_timeout=100,200,300,600,1200,2400,4800;discard_delivered_msgs=true): pbcast.STABLE(stability_delay=1000;desired_avg_gossip=20000;max_bytes=0): pbcast.GMS(print_local_addr=true;join_timeout=5000)" propertySeparator="::" /> --> <!-- 采用UDP多播方式集群 <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" properties="connect=UDP(mcast_addr=231.12.21.133;mcast_port=45566;):PING: MERGE2:FD_SOCK:VERIFY_SUSPECT:pbcast.NAKACK:UNICAST:pbcast.STABLE:FRAG:pbcast.GMS" propertySeparator="::" /> --> <!-- 默认缓存策略 --> <defaultCache eternal="false" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="10" timeToLiveSeconds="10" memoryStoreEvictionPolicy="LFU"> </defaultCache> <!-- 用户信息 --> <cache name="userCache" eternal="false" maxElementsInMemory="500" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="1800" timeToLiveSeconds="0" memoryStoreEvictionPolicy="LFU"> <!-- 若不配置此类服务器重启后将不会同步缓存到本节点 <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory" properties="bootstrapAsynchronously=true" /> <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"/> --> </cache> <!-- 医生信息 --> <cache name="adminUserCache" eternal="false" maxElementsInMemory="500" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="1800" timeToLiveSeconds="0" memoryStoreEvictionPolicy="LFU"> <!-- 若不配置此类服务器重启后将不会同步缓存到本节点 <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory" properties="bootstrapAsynchronously=true" /> <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"/> --> </cache> <!-- 验证码信息 --> <cache name="codeCache" eternal="false" maxElementsInMemory="500" overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="120" timeToLiveSeconds="1800" memoryStoreEvictionPolicy="LFU"> <!-- 若不配置此类服务器重启后将不会同步缓存到本节点 <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory" properties="bootstrapAsynchronously=true" /> <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"/> --> </cache> <!-- 权限信息 --> <cache name="permissionCache" eternal="true" maxElementsInMemory="500" overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="0" memoryStoreEvictionPolicy="LFU"> <!-- 若不配置此类服务器重启后将不会同步缓存到本节点 <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory" properties="bootstrapAsynchronously=true" /> <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"/> --> </cache> </ehcache>