参考了几位同行的Blogs和StackOverflow上的许多问答,搭建了此后端项目,替换原来的node.js后端,和前一篇中搭建的Vue Web App项目配合使用,后端准备只提供服务,不包含后端装配的页面,打算只使用MongoDb和Redis,所以JPA部分注释掉了,可打开使用,核心文件如下,供需要的人参考。

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6.  
  7. <groupId>JavaWeb</groupId>
  8. <artifactId>JavaWeb</artifactId>
  9. <version>1.0</version>
  10. <build>
  11. <plugins>
  12. <plugin>
  13. <groupId>org.apache.maven.plugins</groupId>
  14. <artifactId>maven-compiler-plugin</artifactId>
  15. <configuration>
  16. <source>1.8</source>
  17. <target>1.8</target>
  18. </configuration>
  19. </plugin>
  20. </plugins>
  21. </build>
  22.  
  23. <properties>
  24. <org.springframework.version>5.0.5.RELEASE</org.springframework.version>
  25. </properties>
  26.  
  27. <dependencies>
  28. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
  29. <dependency>
  30. <groupId>org.apache.commons</groupId>
  31. <artifactId>commons-lang3</artifactId>
  32. <version>3.7</version>
  33. </dependency>
  34.  
  35. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
  36. <dependency>
  37. <groupId>org.apache.commons</groupId>
  38. <artifactId>commons-collections4</artifactId>
  39. <version>4.1</version>
  40. </dependency>
  41.  
  42. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
  43. <dependency>
  44. <groupId>org.apache.commons</groupId>
  45. <artifactId>commons-compress</artifactId>
  46. <version>1.16.1</version>
  47. </dependency>
  48.  
  49. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
  50. <dependency>
  51. <groupId>org.apache.commons</groupId>
  52. <artifactId>commons-math3</artifactId>
  53. <version>3.6.1</version>
  54. </dependency>
  55.  
  56. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io -->
  57. <dependency>
  58. <groupId>org.apache.commons</groupId>
  59. <artifactId>commons-io</artifactId>
  60. <version>1.3.2</version>
  61. </dependency>
  62.  
  63. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
  64. <dependency>
  65. <groupId>org.apache.commons</groupId>
  66. <artifactId>commons-pool2</artifactId>
  67. <version>2.5.0</version>
  68. </dependency>
  69.  
  70. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text -->
  71. <dependency>
  72. <groupId>org.apache.commons</groupId>
  73. <artifactId>commons-text</artifactId>
  74. <version>1.3</version>
  75. </dependency>
  76.  
  77. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2 -->
  78. <dependency>
  79. <groupId>org.apache.commons</groupId>
  80. <artifactId>commons-configuration2</artifactId>
  81. <version>2.2</version>
  82. </dependency>
  83.  
  84. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-proxy -->
  85. <dependency>
  86. <groupId>org.apache.commons</groupId>
  87. <artifactId>commons-proxy</artifactId>
  88. <version>1.0</version>
  89. </dependency>
  90.  
  91. <!-- https://mvnrepository.com/artifact/commons-cli/commons-cli -->
  92. <dependency>
  93. <groupId>commons-cli</groupId>
  94. <artifactId>commons-cli</artifactId>
  95. <version>1.4</version>
  96. </dependency>
  97.  
  98. <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
  99. <dependency>
  100. <groupId>com.fasterxml.jackson.core</groupId>
  101. <artifactId>jackson-core</artifactId>
  102. <version>2.9.5</version>
  103. </dependency>
  104.  
  105. <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
  106. <dependency>
  107. <groupId>com.fasterxml.jackson.core</groupId>
  108. <artifactId>jackson-databind</artifactId>
  109. <version>2.9.5</version>
  110. </dependency>
  111.  
  112. <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
  113. <dependency>
  114. <groupId>com.fasterxml.jackson.core</groupId>
  115. <artifactId>jackson-annotations</artifactId>
  116. <version>2.9.5</version>
  117. </dependency>
  118.  
  119. <!-- https://mvnrepository.com/artifact/com.fasterxml.uuid/java-uuid-generator -->
  120. <dependency>
  121. <groupId>com.fasterxml.uuid</groupId>
  122. <artifactId>java-uuid-generator</artifactId>
  123. <version>3.1.5</version>
  124. </dependency>
  125.  
  126. <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
  127. <dependency>
  128. <groupId>org.slf4j</groupId>
  129. <artifactId>slf4j-api</artifactId>
  130. <version>1.7.25</version>
  131. </dependency>
  132.  
  133. <!-- https://mvnrepository.com/artifact/org.slf4j/jcl-over-slf4j -->
  134. <dependency>
  135. <groupId>org.slf4j</groupId>
  136. <artifactId>jcl-over-slf4j</artifactId>
  137. <version>1.7.25</version>
  138. </dependency>
  139.  
  140. <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
  141. <dependency>
  142. <groupId>org.apache.logging.log4j</groupId>
  143. <artifactId>log4j-core</artifactId>
  144. <version>2.11.0</version>
  145. </dependency>
  146.  
  147. <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
  148. <dependency>
  149. <groupId>org.apache.logging.log4j</groupId>
  150. <artifactId>log4j-api</artifactId>
  151. <version>2.11.0</version>
  152. </dependency>
  153.  
  154. <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
  155. <dependency>
  156. <groupId>org.apache.logging.log4j</groupId>
  157. <artifactId>log4j-slf4j-impl</artifactId>
  158. <version>2.11.0</version>
  159. </dependency>
  160.  
  161. <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
  162. <dependency>
  163. <groupId>org.apache.logging.log4j</groupId>
  164. <artifactId>log4j-web</artifactId>
  165. <version>2.11.0</version>
  166. </dependency>
  167.  
  168. <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
  169. <dependency>
  170. <groupId>org.projectlombok</groupId>
  171. <artifactId>lombok</artifactId>
  172. <version>1.16.20</version>
  173. <scope>provided</scope>
  174. </dependency>
  175.  
  176. <!-- https://mvnrepository.com/artifact/junit/junit -->
  177. <dependency>
  178. <groupId>junit</groupId>
  179. <artifactId>junit</artifactId>
  180. <version>4.12</version>
  181. <scope>test</scope>
  182. </dependency>
  183.  
  184. <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
  185. <dependency>
  186. <groupId>javax.servlet</groupId>
  187. <artifactId>javax.servlet-api</artifactId>
  188. <version>4.0.0</version>
  189. <scope>provided</scope>
  190. </dependency>
  191.  
  192. <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
  193. <dependency>
  194. <groupId>javax.servlet.jsp</groupId>
  195. <artifactId>javax.servlet.jsp-api</artifactId>
  196. <version>2.3.1</version>
  197. <scope>provided</scope>
  198. </dependency>
  199.  
  200. <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
  201. <dependency>
  202. <groupId>javax.servlet</groupId>
  203. <artifactId>jstl</artifactId>
  204. <version>1.2</version>
  205. </dependency>
  206.  
  207. <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
  208. <dependency>
  209. <groupId>org.springframework</groupId>
  210. <artifactId>spring-core</artifactId>
  211. <version>${org.springframework.version}</version>
  212. </dependency>
  213.  
  214. <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
  215. <dependency>
  216. <groupId>org.springframework</groupId>
  217. <artifactId>spring-beans</artifactId>
  218. <version>${org.springframework.version}</version>
  219. </dependency>
  220.  
  221. <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
  222. <dependency>
  223. <groupId>org.springframework</groupId>
  224. <artifactId>spring-tx</artifactId>
  225. <version>${org.springframework.version}</version>
  226. </dependency>
  227.  
  228. <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
  229. <dependency>
  230. <groupId>org.springframework</groupId>
  231. <artifactId>spring-context</artifactId>
  232. <version>${org.springframework.version}</version>
  233. </dependency>
  234.  
  235. <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
  236. <dependency>
  237. <groupId>org.springframework</groupId>
  238. <artifactId>spring-context-support</artifactId>
  239. <version>${org.springframework.version}</version>
  240. </dependency>
  241.  
  242. <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
  243. <dependency>
  244. <groupId>org.springframework</groupId>
  245. <artifactId>spring-aop</artifactId>
  246. <version>${org.springframework.version}</version>
  247. </dependency>
  248.  
  249. <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
  250. <dependency>
  251. <groupId>org.springframework</groupId>
  252. <artifactId>spring-aspects</artifactId>
  253. <version>${org.springframework.version}</version>
  254. </dependency>
  255.  
  256. <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
  257. <dependency>
  258. <groupId>org.springframework</groupId>
  259. <artifactId>spring-web</artifactId>
  260. <version>${org.springframework.version}</version>
  261. </dependency>
  262.  
  263. <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
  264. <dependency>
  265. <groupId>org.springframework</groupId>
  266. <artifactId>spring-webmvc</artifactId>
  267. <version>${org.springframework.version}</version>
  268. </dependency>
  269.  
  270. <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
  271. <dependency>
  272. <groupId>org.springframework</groupId>
  273. <artifactId>spring-test</artifactId>
  274. <version>${org.springframework.version}</version>
  275. <scope>test</scope>
  276. </dependency>
  277.  
  278. <!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-core -->
  279. <dependency>
  280. <groupId>org.springframework.session</groupId>
  281. <artifactId>spring-session-core</artifactId>
  282. <version>2.0.2.RELEASE</version>
  283. </dependency>
  284.  
  285. <!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
  286. <dependency>
  287. <groupId>org.springframework.session</groupId>
  288. <artifactId>spring-session-data-redis</artifactId>
  289. <version>2.0.2.RELEASE</version>
  290. </dependency>
  291.  
  292. <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
  293. <dependency>
  294. <groupId>org.springframework.data</groupId>
  295. <artifactId>spring-data-jpa</artifactId>
  296. <version>2.0.6.RELEASE</version>
  297. </dependency>
  298.  
  299. <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
  300. <dependency>
  301. <groupId>org.hibernate</groupId>
  302. <artifactId>hibernate-core</artifactId>
  303. <version>5.2.16.Final</version>
  304. </dependency>
  305.  
  306. <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
  307. <dependency>
  308. <groupId>org.hibernate</groupId>
  309. <artifactId>hibernate-entitymanager</artifactId>
  310. <version>5.2.16.Final</version>
  311. </dependency>
  312.  
  313. <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
  314. <dependency>
  315. <groupId>org.hibernate</groupId>
  316. <artifactId>hibernate-validator</artifactId>
  317. <version>6.0.9.Final</version>
  318. </dependency>
  319.  
  320. <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  321. <dependency>
  322. <groupId>mysql</groupId>
  323. <artifactId>mysql-connector-java</artifactId>
  324. <version>5.1.6</version>
  325. </dependency>
  326.  
  327. <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb -->
  328. <dependency>
  329. <groupId>org.springframework.data</groupId>
  330. <artifactId>spring-data-mongodb</artifactId>
  331. <version>2.0.6.RELEASE</version>
  332. </dependency>
  333.  
  334. <!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
  335. <dependency>
  336. <groupId>org.mongodb</groupId>
  337. <artifactId>mongo-java-driver</artifactId>
  338. <version>3.6.3</version>
  339. </dependency>
  340.  
  341. <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb -->
  342. <dependency>
  343. <groupId>org.springframework.data</groupId>
  344. <artifactId>spring-data-redis</artifactId>
  345. <version>2.0.6.RELEASE</version>
  346. </dependency>
  347.  
  348. <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
  349. <dependency>
  350. <groupId>redis.clients</groupId>
  351. <artifactId>jedis</artifactId>
  352. <version>2.9.0</version>
  353. </dependency>
  354.  
  355. <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
  356. <dependency>
  357. <groupId>org.apache.httpcomponents</groupId>
  358. <artifactId>httpclient</artifactId>
  359. <version>4.5.5</version>
  360. </dependency>
  361.  
  362. <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
  363. <dependency>
  364. <groupId>org.apache.httpcomponents</groupId>
  365. <artifactId>httpcore</artifactId>
  366. <version>4.4.9</version>
  367. </dependency>
  368.  
  369. <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
  370. <dependency>
  371. <groupId>net.sf.ehcache</groupId>
  372. <artifactId>ehcache</artifactId>
  373. <version>2.10.5</version>
  374. </dependency>
  375.  
  376. <!-- https://mvnrepository.com/artifact/com.corundumstudio.socketio/netty-socketio -->
  377. <dependency>
  378. <groupId>com.corundumstudio.socketio</groupId>
  379. <artifactId>netty-socketio</artifactId>
  380. <version>1.7.15</version>
  381. </dependency>
  382.  
  383. <!-- https://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/ffmpeg -->
  384. <dependency>
  385. <groupId>net.bramp.ffmpeg</groupId>
  386. <artifactId>ffmpeg</artifactId>
  387. <version>0.6.2</version>
  388. </dependency>
  389.  
  390. <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
  391. <dependency>
  392. <groupId>org.apache.poi</groupId>
  393. <artifactId>poi</artifactId>
  394. <version>3.17</version>
  395. </dependency>
  396.  
  397. <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
  398. <dependency>
  399. <groupId>org.apache.poi</groupId>
  400. <artifactId>poi-ooxml</artifactId>
  401. <version>3.17</version>
  402. </dependency>
  403.  
  404. <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad -->
  405. <dependency>
  406. <groupId>org.apache.poi</groupId>
  407. <artifactId>poi-scratchpad</artifactId>
  408. <version>3.17</version>
  409. </dependency>
  410.  
  411. </dependencies>
  412.  
  413. </project>

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  5. version="3.1">
  6.  
  7. <!-- Session -->
  8. <filter>
  9. <filter-name>springSessionRepositoryFilter</filter-name>
  10. <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  11. </filter>
  12. <filter-mapping>
  13. <filter-name>springSessionRepositoryFilter</filter-name>
  14. <url-pattern>/*</url-pattern>
  15. <dispatcher>REQUEST</dispatcher>
  16. <dispatcher>ERROR</dispatcher>
  17. </filter-mapping>
  18.  
  19. <servlet>
  20. <servlet-name>dispatcher</servlet-name>
  21. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  22. <!--<init-param>-->
  23. <!--<param-name>contextConfigLocation</param-name>-->
  24. <!--<param-value>/WEB-INF/applicationContext.xml</param-value>-->
  25. <!--</init-param>-->
  26. <load-on-startup>1</load-on-startup>
  27. </servlet>
  28.  
  29. <servlet-mapping>
  30. <servlet-name>dispatcher</servlet-name>
  31. <url-pattern>/</url-pattern>
  32. </servlet-mapping>
  33.  
  34. <filter>
  35. <filter-name>encodingFilter</filter-name>
  36. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  37. <init-param>
  38. <param-name>encoding</param-name>
  39. <param-value>UTF-8</param-value>
  40. </init-param>
  41. <init-param>
  42. <param-name>forceEncoding</param-name>
  43. <param-value>true</param-value>
  44. </init-param>
  45. </filter>
  46. <filter-mapping>
  47. <filter-name>encodingFilter</filter-name>
  48. <url-pattern>/*</url-pattern>
  49. </filter-mapping>
  50.  
  51. <context-param>
  52. <param-name>contextConfigLocation</param-name>
  53. <param-value>/WEB-INF/applicationContext.xml</param-value>
  54. </context-param>
  55.  
  56. <context-param>
  57. <param-name>log4jConfiguration</param-name>
  58. <!-- 日志配置文件路径,请根据具体项目自行调整 -->
  59. <param-value>classpath:META-INF/log4j2.xml</param-value>
  60. </context-param>
  61.  
  62. <listener>
  63. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  64. </listener>
  65.  
  66. </web-app>

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mongo="http://www.springframework.org/schema/data/mongo"
  6. xmlns:cache="http://www.springframework.org/schema/cache"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  11. http://www.springframework.org/schema/data/mongo
  12. http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
  13. http://www.springframework.org/schema/cache
  14. http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">
  15.  
  16. <context:property-placeholder location="classpath*:META-INF/config.properties"/>
  17.  
  18. <!-- SpringData类型转换器 -->
  19. <!--<mongo:mapping-converter id="mongoConverter">-->
  20. <!--<mongo:custom-converters>-->
  21. <!--<mongo:converter>-->
  22. <!--<bean class="com.jastar.demo.converter.TimestampConverter" />-->
  23. <!--</mongo:converter>-->
  24. <!--</mongo:custom-converters>-->
  25. <!--</mongo:mapping-converter>-->
  26.  
  27. <mongo:mongo-client id="mongo" host="${mongo.host}" port="${mongo.port}">
  28. <mongo:client-options connections-per-host="${mongo.connectionsPerHost}"
  29. threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
  30. connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
  31. socket-keep-alive="${mongo.socketKeepAlive}" socket-timeout="${mongo.socketTimeout}"/>
  32. </mongo:mongo-client>
  33. <!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
  34. <mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbname}"
  35. mongo-ref="mongo"/>
  36.  
  37. <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->
  38. <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
  39. <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
  40. <!--<constructor-arg name="mongoConverter" ref="mongoConverter" />-->
  41. </bean>
  42.  
  43. <context:component-scan base-package="com.company.framework.dao"/>
  44.  
  45. <mongo:repositories base-package="com.company.framework.dao"/>
  46.  
  47. <!-- redis数据源 -->
  48. <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
  49. <!-- 池中可借的最大数 -->
  50. <property name="maxTotal" value="${redis.maxTotal}"/>
  51. <!-- 允许池中空闲的最大连接数 -->
  52. <property name="maxIdle" value="${redis.maxIdle}"/>
  53. <!-- 允许池中空闲的最小连接数 -->
  54. <property name="minIdle" value="${redis.minIdle}"/>
  55. <!-- 获取连接最大等待时间(毫秒) -->
  56. <property name="maxWaitMillis" value="${redis.maxWaitMillis}"/>
  57. <!-- 当maxActive到达最大数,获取连接时的操作 是否阻塞等待 -->
  58. <property name="blockWhenExhausted" value="${redis.blockWhenExhausted}"/>
  59. <!-- 在获取连接时,是否验证有效性 -->
  60. <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
  61. <!-- 在归还连接时,是否验证有效性 -->
  62. <property name="testOnReturn" value="${redis.testOnReturn}"/>
  63. <!-- 当连接空闲时,是否验证有效性 -->
  64. <property name="testWhileIdle" value="${redis.testWhileIdle}"/>
  65. <!-- 设定间隔没过多少毫秒进行一次后台连接清理的行动 -->
  66. <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}"/>
  67. <!-- 每次检查的连接数 -->
  68. <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}"/>
  69. </bean>
  70.  
  71. <!-- Spring-redis连接池管理工厂 -->
  72. <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
  73. <!-- IP地址 -->
  74. <property name="hostName" value="${redis.hostName}"/>
  75. <!-- 端口号 -->
  76. <property name="port" value="${redis.port}"/>
  77. <!-- 超时时间 默认2000-->
  78. <property name="timeout" value="${redis.timeout}"/>
  79. <!-- 连接池配置引用 -->
  80. <property name="poolConfig" ref="jedisPoolConfig" />
  81. <!-- usePool:是否使用连接池 -->
  82. <property name="usePool" value="true"/>
  83. </bean>
  84.  
  85. <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
  86. <property name="connectionFactory" ref="jedisConnectionFactory"/>
  87. <property name="keySerializer">
  88. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
  89. </property>
  90. <property name="valueSerializer">
  91. <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
  92. </property>
  93. <property name="hashKeySerializer">
  94. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
  95. </property>
  96. <property name="hashValueSerializer">
  97. <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
  98. </property>
  99. <!--开启事务 -->
  100. <property name="enableTransactionSupport" value="true"></property>
  101. </bean>
  102.  
  103. <bean id="redisHttpSessionConfiguration"
  104. class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
  105.  
  106. <cache:annotation-driven cache-manager="cacheManager" />
  107.  
  108. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
  109. <property name="cacheManager" ref="ehcache"></property>
  110. </bean>
  111.  
  112. <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
  113. <property name="configLocation" value="classpath:META-INF/ehcache-setting.xml"></property>
  114. </bean>
  115.  
  116. </beans>

dispatcher-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xmlns:jpa="http://www.springframework.org/schema/data/jpa"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xsi:schemaLocation="http://www.springframework.org/schema/beans
  9. http://www.springframework.org/schema/beans/spring-beans.xsd
  10. http://www.springframework.org/schema/context
  11. http://www.springframework.org/schema/context/spring-context.xsd
  12. http://www.springframework.org/schema/mvc
  13. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  14. http://www.springframework.org/schema/data/jpa
  15. http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd
  16. http://www.springframework.org/schema/tx
  17. http://www.springframework.org/schema/tx/spring-tx.xsd">
  18.  
  19. <context:component-scan base-package="com.company.framework.component"/>
  20.  
  21. <context:component-scan base-package="com.company.framework.service"/>
  22.  
  23. <!--指明 controller 所在包,并扫描其中的注解-->
  24. <context:component-scan base-package="com.company.framework.controller"/>
  25.  
  26. <!-- 静态资源(js、image等)的访问 -->
  27. <mvc:default-servlet-handler/>
  28.  
  29. <!-- 开启注解 -->
  30. <mvc:annotation-driven/>
  31.  
  32. <!--ViewResolver 视图解析器-->
  33. <!--用于支持Servlet、JSP视图解析-->
  34. <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  35. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  36. <property name="prefix" value="/WEB-INF/pages/"/>
  37. <property name="suffix" value=".jsp"/>
  38. </bean>
  39.  
  40. <!-- 表示JPA Repository所在的包 -->
  41. <!--<jpa:repositories base-package="com.company.framework.dao2"/>-->
  42.  
  43. <!--<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">-->
  44. <!--<property name="persistenceUnitName" value="defaultPersistenceUnit"/>-->
  45. <!--</bean>-->
  46.  
  47. <!-- 事务管理 -->
  48. <!--<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">-->
  49. <!--<property name="entityManagerFactory" ref="entityManagerFactory"/>-->
  50. <!--</bean>-->
  51.  
  52. <!--<tx:annotation-driven transaction-manager="transactionManager"/>-->
  53.  
  54. <!-- make spring look up annotation -->
  55. <context:annotation-config/>
  56.  
  57. </beans>

ehcache-setting.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ehcache>
  3. <!-- 指定一个文件目录,当EhCache把数据写到硬盘上时,将把数据写到这个文件目录下 -->
  4. <diskStore path="java.io.tmpdir"/>
  5.  
  6. <!--name:缓存名称-->
  7. <!--maxElementsInMemory:内存中最大缓存对象数-->
  8. <!--maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大-->
  9. <!--eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false-->
  10. <!--overflowToDisk:true表示当内存缓存的对象数目达到了-->
  11. <!--maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。-->
  12. <!--diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。-->
  13. <!--diskPersistent:是否缓存虚拟机重启期数据,是否持久化磁盘缓存,当这个属性的值为true时,系统在初始化时会在磁盘中查找文件名 为cache名称,后缀名为index的文件,这个文件中存放了已经持久化在磁盘中的cache的index,找到后会把cache加载到内存,要想把 cache真正持久化到磁盘,写程序时注意执行net.sf.ehcache.Cache.put(Element element)后要调用flush()方法。-->
  14. <!--diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒-->
  15. <!--timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性 值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限 期地处于空闲状态-->
  16. <!--timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有 效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有 意义-->
  17. <!--memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。-->
  18.  
  19. <!-- 设定缓存的默认数据过期策略 -->
  20. <defaultCache
  21. maxElementsInMemory="10000"
  22. eternal="false"
  23. overflowToDisk="true"
  24. timeToIdleSeconds="10"
  25. timeToLiveSeconds="20"
  26. diskPersistent="false"
  27. diskExpiryThreadIntervalSeconds="120"/>
  28.  
  29. <cache name="cache"
  30. maxElementsInMemory="10000"
  31. eternal="false"
  32. overflowToDisk="true"
  33. timeToIdleSeconds="10"
  34. timeToLiveSeconds="20"/>
  35.  
  36. </ehcache>

log4j2.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
  3. <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
  4. <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
  5. <configuration status="WARN" monitorInterval="30">
  6. <!--先定义所有的appender-->
  7. <appenders>
  8. <!--这个输出控制台的配置-->
  9. <console name="Console" target="SYSTEM_OUT">
  10. <!--输出日志的格式-->
  11. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  12. </console>
  13. <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
  14. <File name="log" fileName="log/test.log" append="false">
  15. <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  16. </File>
  17. <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
  18. <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
  19. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
  20. <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
  21. <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
  22. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  23. <Policies>
  24. <TimeBasedTriggeringPolicy/>
  25. <SizeBasedTriggeringPolicy size="100 MB"/>
  26. </Policies>
  27. </RollingFile>
  28. <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
  29. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
  30. <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
  31. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  32. <Policies>
  33. <TimeBasedTriggeringPolicy/>
  34. <SizeBasedTriggeringPolicy size="100 MB"/>
  35. </Policies>
  36. <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
  37. <DefaultRolloverStrategy max="20"/>
  38. </RollingFile>
  39. <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
  40. filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
  41. <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
  42. <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  43. <Policies>
  44. <TimeBasedTriggeringPolicy/>
  45. <SizeBasedTriggeringPolicy size="100 MB"/>
  46. </Policies>
  47. </RollingFile>
  48. </appenders>
  49. <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
  50. <loggers>
  51. <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
  52. <logger name="org.springframework" level="INFO"></logger>
  53. <logger name="org.hibernate" level="INFO"></logger>
  54. <logger name="org.mongodb.driver" level="INFO" />
  55. <logger name="org.mongodb.driver.cluster" level="OFF" />
  56. <root level="debug">
  57. <appender-ref ref="Console"/>
  58. <appender-ref ref="RollingFileInfo"/>
  59. <appender-ref ref="RollingFileWarn"/>
  60. <appender-ref ref="RollingFileError"/>
  61. </root>
  62. </loggers>
  63. </configuration>

config.properties

  1. ###---The mongodb settings---
  2. mongo.dbname=admin
  3. mongo.host=127.0.0.1
  4. mongo.port=27017
  5. mongo.connectionsPerHost=8
  6. mongo.threadsAllowedToBlockForConnectionMultiplier=4
  7. mongo.connectTimeout=1000
  8. mongo.maxWaitTime=1500
  9. mongo.autoConnectRetry=true
  10. mongo.socketKeepAlive=true
  11. mongo.socketTimeout=1500
  12. mongo.slaveOk=true
  13. mongo.writeNumber=1
  14. mongo.writeTimeout=0
  15. mongo.writeFsync=true
  16.  
  17. ###---The redis settings---
  18. redis.hostName=127.0.0.1
  19. redis.port=6379
  20. redis.password=""
  21. redis.maxTotal=6000
  22. redis.maxIdle=400
  23. redis.minIdle=2
  24. redis.maxWaitMillis=1000
  25. redis.blockWhenExhausted=true
  26. redis.testOnBorrow=true
  27. redis.testOnReturn=true
  28. redis.testWhileIdle=true
  29. redis.timeBetweenEvictionRunsMillis=1800000
  30. redis.numTestsPerEvictionRun=5
  31. redis.timeout=100000
  32. defaultCacheExpireTime=60

Java Spring 后端项目搭建的更多相关文章

  1. Java Spring MVC项目搭建(二)——项目配置

    1.站点配置文件web.xml 每一个Spring MVC 项目都必须有一个站点配置文件web.xml,他的主要功能吗....有一位大哥已经整理的很好,我借来了,大家看看: 引用博客地址: http: ...

  2. Java Spring MVC项目搭建(一)——Spring MVC框架集成

    1.Java JDK及Tomcat安装 我这里安装的是JDK 1.8 及 Tomcat 8,安装步骤详见:http://www.cnblogs.com/eczhou/p/6285248.html 2. ...

  3. Java Spring MVC项目搭建(三)——“Hello World”

    在Spring 的配置文件里,我们定义了一个bean ,Spring 会在启动时候会生成对象. <bean id = "helloworld" class="com ...

  4. Spring MVC 项目搭建 -1- 创建项目

    Spring MVC 项目搭建 -1- 创建项目 1.创建 Dynamic Web project (SpringDemo),添加相关jar包 2.创建一个简单的controller类 package ...

  5. Spring Boot项目搭建

    1.Spring Boot概述 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  6. Spring boot项目搭建及简单实例

    Spring boot项目搭建 Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for ...

  7. Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置

    Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...

  8. Spring MVC 项目搭建 -5- spring security 使用数据库进行验证

    Spring MVC 项目搭建 -5- spring security 使用数据库进行验证 1.创建数据表格(这里使用的是mysql) CREATE TABLE security_role ( id ...

  9. Spring MVC 项目搭建 -4- spring security-添加自定义登录页面

    Spring MVC 项目搭建 -4- spring security-添加自定义登录页面 修改配置文件 <!--spring-sample-security.xml--> <!-- ...

随机推荐

  1. web 前端遇到的问题

    前端小白一枚,经常遇到一些小问题,但是解决完吧,又记不住,哎,好记性不如烂笔头咯 1. 如何在js代码中设置checkbox选中? $("#select").attr('check ...

  2. 《Visual C++开发实战1200例 第1卷》扫描版[PDF]

    [内容简介:] <Visual C++开发实战1200例(第1卷)>是“软件开发实战1200例”丛书之一.<Visual C++开发实战1200例(第1卷)>,编程实例的四库全 ...

  3. 第八章 高级搜索树 (xa3)红黑树:插入

  4. access数据库收缩(压缩)

    一般是因为表中有大量没用的数据,把没用的数据全部删除 菜单栏的“工具”——“数据库实用工具”——“压缩和修复数据库” OK啦

  5. windows下用tcc编译Lua

    脚本来源:Demon's Blog,http://demon.tw/software/compile-lua-with-tcc.html 版权归原作者所有 使用方法: 1.下载tcc编译器,本文解压目 ...

  6. [python] can not find app ,module

    can not find module 1 startapp appname 而不是 startproject 2 不要自己创建项目根目录,要用mamage.py生成 can not find app ...

  7. UI设计如何做好排版?你可以学习一下格式塔原理

    格式塔是一种视觉感知的理论,是研究人们视觉如何将元素组织成群体或整体,从而视觉上进行分类,在设计中,我们使用格式原理能使得我们设计更科学性,更具吸引力.通过格式塔效应,去处理设计中的点.线.面.颜色. ...

  8. [SoapUI] Datasink怎么显示每次循环的结果

    https://www.soapui.org/reporting/the-report-datasink.html

  9. devexpress v14.2.3 发布

    补丁而已. New Major Features in 14.2 What's New in VCL Products 14.2 Breaking Changes To learn about bre ...

  10. 2018.07.20 bzoj3211: 花神游历各国(线段树)

    传送门 维护区间开方,区间求和.这个是线段树常规操作. 显然一个数被开方若干次之后要么是1,要么是0,所以用线段树维护区间最大和区间和,如果区间最大不超过1就剪枝剪掉,不然就继续递归直到叶节点时停下进 ...