1、新建一個Maven項目,創建父項目。
2、創建子項目模塊
3、創建javaWeb項目
4、創建后的項目目錄結構
5、Maven文件配置
- parent父項目pom.xml文件配置
<?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>
- Soncore項目pom.xml文件配置
<?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>
- Sonutils項目pom.xml文件配置
<?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>
- Sonstore項目pom.xml文件配置
<?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>
- Admin項目(WEB)pom.xml文件配置
<?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>
6、Spring SpringMVC Mybatis框架文件配置
- applicationContext.xml文件配置
<?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>
- conf.properties文件配置
#數據庫連接
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=
- spring-mvc.xml文件配置
<?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>
- configuration.xml文件配置
<?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.properties文件配置
#定義根級別
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
- ehcache.xml文件配置
<?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>