搭建SpringMVC框架

Dear 丶 2022-08-03 13:54 270阅读 0赞

框架项目请跳转到: springMVC

本文在他人框架配置文件的基础上,学习Spring框架的知识,同时也结合多篇博文对框架进行改进与增加工鞥,比如缓存、多数据源以及AOP实现缓存处理等内容。仅供交流。

感谢ZBB, 老乡就是给力!

基本配置

项目分为两个子项目:

  • 父项目:project
  • 子项目:web + core

MAVEN 依赖

  • pom.xml配置

首先父项目配置了底层的一些工具包依赖,以及定义了一些主要类库的版本,并声明了子模块。

子模块则标记了父模块,同时引入了自身的一些依赖库。声明了自身的封装方式:core(jar)、web(war)。

同时,web又引入了core。

因此生成整个项目时候,应该先生成core,再生成web.

** project -> pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.rails</groupId>
  5. <artifactId>vehicle</artifactId>
  6. <version>1.0</version>
  7. <packaging>pom</packaging>
  8. <properties>
  9. <java.version>1.6</java.version>
  10. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  11. <postgresql.version>9.1-901.jdbc4</postgresql.version>
  12. <mysql.version>5.1.18</mysql.version>
  13. <slf4j.version>1.6.2</slf4j.version>
  14. <spring.version>3.2.2.RELEASE</spring.version>
  15. <shiro.version>1.2.3</shiro.version>
  16. <thymeleaf.version>2.0.16</thymeleaf.version>
  17. <thymeleaf-spring.version>2.0.16</thymeleaf-spring.version>
  18. <!-- Java EE / Java SE dependencies -->
  19. <jsp.version>2.2</jsp.version>
  20. <jstl.version>1.2</jstl.version>
  21. <servlet.version>2.5</servlet.version>
  22. <javax-el.version>2.2</javax-el.version>
  23. <jaxb-impl.version>2.2.7-b63</jaxb-impl.version>
  24. <aspectj.version>1.7.2</aspectj.version>
  25. <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
  26. </properties>
  27. <dependencyManagement>
  28. <dependencies>
  29. <dependency>
  30. <groupId>com.rails</groupId>
  31. <artifactId>core</artifactId>
  32. <version>1.0</version>
  33. <type>jar</type>
  34. <scope>compile</scope>
  35. </dependency>
  36. <dependency>
  37. <groupId>junit</groupId>
  38. <artifactId>junit</artifactId>
  39. <version>3.8.1</version>
  40. <scope>test</scope>
  41. </dependency>
  42. <dependency>
  43. <groupId>postgresql</groupId>
  44. <artifactId>postgresql</artifactId>
  45. <version>${postgresql.version}</version>
  46. </dependency>
  47. <dependency>
  48. <groupId>mysql</groupId>
  49. <artifactId>mysql-connector-java</artifactId>
  50. <version>${mysql.version}</version>
  51. </dependency>
  52. </dependencies>
  53. </dependencyManagement>
  54. <modules>
  55. <module>core</module>
  56. <module>web</module>
  57. </modules>
  58. </project>

** core -> pom.xml

  1. <?xml version="1.0"?>
  2. <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">
  3. <modelVersion>4.0.0</modelVersion>
  4. <parent>
  5. <groupId>com.rails</groupId>
  6. <artifactId>vehicle</artifactId>
  7. <version>1.0</version>
  8. </parent>
  9. <artifactId>core</artifactId>
  10. <name>core</name>
  11. <url>http://maven.apache.org</url>
  12. <dependencies>
  13. <!-- commons-collections -->
  14. <dependency>
  15. <groupId>commons-collections</groupId>
  16. <artifactId>commons-collections</artifactId>
  17. <version>3.2.1</version>
  18. </dependency>
  19. <dependency>
  20. <groupId>junit</groupId>
  21. <artifactId>junit</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>log4j</groupId>
  25. <artifactId>log4j</artifactId>
  26. <version>1.2.16</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.slf4j</groupId>
  30. <artifactId>slf4j-api</artifactId>
  31. <version>${slf4j.version}</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.slf4j</groupId>
  35. <artifactId>jcl-over-slf4j</artifactId>
  36. <version>${slf4j.version}</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.slf4j</groupId>
  40. <artifactId>slf4j-log4j12</artifactId>
  41. <version>${slf4j.version}</version>
  42. </dependency>
  43. <dependency>
  44. <groupId>com.sun.xml.bind</groupId>
  45. <artifactId>jaxb-impl</artifactId>
  46. <version>${jaxb-impl.version}</version>
  47. <scope>provided</scope>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.apache.commons</groupId>
  51. <artifactId>commons-lang3</artifactId>
  52. <version>3.0.1</version>
  53. </dependency>
  54. <!-- servlet -->
  55. <dependency>
  56. <groupId>javax.servlet</groupId>
  57. <artifactId>servlet-api</artifactId>
  58. <version>${servlet.version}</version>
  59. <scope>provided</scope>
  60. </dependency>
  61. <!-- jstl -->
  62. <dependency>
  63. <groupId>javax.servlet</groupId>
  64. <artifactId>jstl</artifactId>
  65. <version>${jstl.version}</version>
  66. </dependency>
  67. <dependency>
  68. <groupId>javax.servlet.jsp</groupId>
  69. <artifactId>jsp-api</artifactId>
  70. <version>${jsp.version}</version>
  71. <scope>provided</scope>
  72. </dependency>
  73. <!-- Spring dependencies -->
  74. <dependency>
  75. <groupId>org.springframework</groupId>
  76. <artifactId>spring-core</artifactId>
  77. <version>${spring.version}</version>
  78. <exclusions>
  79. <exclusion>
  80. <groupId>commons-logging</groupId>
  81. <artifactId>commons-logging</artifactId>
  82. </exclusion>
  83. </exclusions>
  84. </dependency>
  85. <dependency>
  86. <groupId>org.springframework</groupId>
  87. <artifactId>spring-context</artifactId>
  88. <version>${spring.version}</version>
  89. </dependency>
  90. <dependency>
  91. <groupId>org.springframework</groupId>
  92. <artifactId>spring-jdbc</artifactId>
  93. <version>${spring.version}</version>
  94. </dependency>
  95. <dependency>
  96. <groupId>org.springframework</groupId>
  97. <artifactId>spring-beans</artifactId>
  98. <version>${spring.version}</version>
  99. </dependency>
  100. <dependency>
  101. <groupId>org.springframework</groupId>
  102. <artifactId>spring-web</artifactId>
  103. <version>${spring.version}</version>
  104. </dependency>
  105. <dependency>
  106. <groupId>org.springframework</groupId>
  107. <artifactId>spring-expression</artifactId>
  108. <version>${spring.version}</version>
  109. </dependency>
  110. <dependency>
  111. <groupId>org.springframework</groupId>
  112. <artifactId>spring-orm</artifactId>
  113. <version>${spring.version}</version>
  114. </dependency>
  115. <dependency>
  116. <groupId>org.springframework</groupId>
  117. <artifactId>spring-test</artifactId>
  118. <version>${spring.version}</version>
  119. <scope>provided</scope>
  120. </dependency>
  121. <dependency>
  122. <groupId>org.springframework</groupId>
  123. <artifactId>spring-aop</artifactId>
  124. <version>${spring.version}</version>
  125. </dependency>
  126. <dependency>
  127. <groupId>org.springframework</groupId>
  128. <artifactId>spring-aspects</artifactId>
  129. <version>${spring.version}</version>
  130. </dependency>
  131. <dependency>
  132. <groupId>javax.validation</groupId>
  133. <artifactId>validation-api</artifactId>
  134. <version>1.0.0.GA</version>
  135. </dependency>
  136. <dependency>
  137. <groupId>cglib</groupId>
  138. <artifactId>cglib-nodep</artifactId>
  139. <version>2.2.2</version>
  140. </dependency>
  141. <dependency>
  142. <groupId>org.aspectj</groupId>
  143. <artifactId>aspectjrt</artifactId>
  144. <version>${aspectj.version}</version>
  145. </dependency>
  146. <dependency>
  147. <groupId>org.aspectj</groupId>
  148. <artifactId>aspectjweaver</artifactId>
  149. <version>${aspectj.version}</version>
  150. </dependency>
  151. <dependency>
  152. <groupId>javax.transaction</groupId>
  153. <artifactId>jta</artifactId>
  154. <version>1.1</version>
  155. </dependency>
  156. <dependency>
  157. <groupId>org.springframework</groupId>
  158. <artifactId>spring-webmvc</artifactId>
  159. <version>${spring.version}</version>
  160. </dependency>
  161. <dependency>
  162. <groupId>commons-digester</groupId>
  163. <artifactId>commons-digester</artifactId>
  164. <version>2.1</version>
  165. <exclusions>
  166. <exclusion>
  167. <groupId>commons-logging</groupId>
  168. <artifactId>commons-logging</artifactId>
  169. </exclusion>
  170. </exclusions>
  171. </dependency>
  172. <dependency>
  173. <groupId>commons-fileupload</groupId>
  174. <artifactId>commons-fileupload</artifactId>
  175. <version>1.2.2</version>
  176. </dependency>
  177. <dependency>
  178. <groupId>org.apache.commons</groupId>
  179. <artifactId>commons-io</artifactId>
  180. <version>1.3.2</version>
  181. </dependency>
  182. <dependency>
  183. <groupId>javax.servlet.jsp.jstl</groupId>
  184. <artifactId>jstl-api</artifactId>
  185. <version>1.2</version>
  186. </dependency>
  187. <dependency>
  188. <groupId>org.glassfish.web</groupId>
  189. <artifactId>jstl-impl</artifactId>
  190. <version>1.2</version>
  191. </dependency>
  192. <dependency>
  193. <groupId>javax.el</groupId>
  194. <artifactId>el-api</artifactId>
  195. <version>1.0</version>
  196. <scope>provided</scope>
  197. </dependency>
  198. <dependency>
  199. <groupId>commons-codec</groupId>
  200. <artifactId>commons-codec</artifactId>
  201. <version>1.5</version>
  202. </dependency>
  203. <!-- JAX-RS Libraries -->
  204. <dependency>
  205. <groupId>com.sun.jersey</groupId>
  206. <artifactId>jersey-json</artifactId>
  207. <version>1.11</version>
  208. <type>jar</type>
  209. <scope>compile</scope>
  210. </dependency>
  211. <dependency>
  212. <groupId>com.sun.jersey.contribs</groupId>
  213. <artifactId>jersey-spring</artifactId>
  214. <version>1.11</version>
  215. <type>jar</type>
  216. <scope>compile</scope>
  217. <exclusions>
  218. <exclusion>
  219. <groupId>org.springframework</groupId>
  220. <artifactId>spring-aop</artifactId>
  221. </exclusion>
  222. <exclusion>
  223. <groupId>org.springframework</groupId>
  224. <artifactId>spring-context</artifactId>
  225. </exclusion>
  226. <exclusion>
  227. <groupId>org.springframework</groupId>
  228. <artifactId>spring-beans</artifactId>
  229. </exclusion>
  230. <exclusion>
  231. <groupId>org.springframework</groupId>
  232. <artifactId>spring-core</artifactId>
  233. </exclusion>
  234. <exclusion>
  235. <artifactId>spring-web</artifactId>
  236. <groupId>org.springframework</groupId>
  237. </exclusion>
  238. </exclusions>
  239. </dependency>
  240. <dependency>
  241. <groupId>com.sun.jersey</groupId>
  242. <artifactId>jersey-server</artifactId>
  243. <version>1.11</version>
  244. </dependency>
  245. <dependency>
  246. <groupId>com.sun.jersey</groupId>
  247. <artifactId>jersey-client</artifactId>
  248. <version>1.11</version>
  249. </dependency>
  250. <dependency>
  251. <groupId>javax.ws.rs</groupId>
  252. <artifactId>jsr311-api</artifactId>
  253. <version>1.1.1</version>
  254. </dependency>
  255. <!-- hibernate4 -->
  256. <dependency>
  257. <groupId>org.hibernate</groupId>
  258. <artifactId>hibernate-core</artifactId>
  259. <version>4.2.5.Final</version>
  260. </dependency>
  261. <dependency>
  262. <groupId>org.hibernate</groupId>
  263. <artifactId>hibernate-entitymanager</artifactId>
  264. <version>4.2.5.Final</version>
  265. </dependency>
  266. <dependency>
  267. <groupId>org.hibernate</groupId>
  268. <artifactId>hibernate-ehcache</artifactId>
  269. <version>4.2.5.Final</version>
  270. </dependency>
  271. <dependency>
  272. <groupId>com.googlecode.ehcache-spring-annotations</groupId>
  273. <artifactId>ehcache-spring-annotations</artifactId>
  274. <version>1.2.0</version>
  275. </dependency>
  276. <dependency>
  277. <groupId>org.hibernate.javax.persistence</groupId>
  278. <artifactId>hibernate-jpa-2.0-api</artifactId>
  279. <version>1.0.1.Final</version>
  280. </dependency>
  281. <dependency>
  282. <groupId>org.hibernate</groupId>
  283. <artifactId>hibernate-validator</artifactId>
  284. <version>4.2.0.Final</version>
  285. <exclusions>
  286. <exclusion>
  287. <groupId>javax.xml.bind</groupId>
  288. <artifactId>jaxb-api</artifactId>
  289. </exclusion>
  290. <exclusion>
  291. <groupId>com.sun.xml.bind</groupId>
  292. <artifactId>jaxb-impl</artifactId>
  293. </exclusion>
  294. </exclusions>
  295. </dependency>
  296. <dependency>
  297. <groupId>org.codehaus.jackson</groupId>
  298. <artifactId>jackson-mapper-asl</artifactId>
  299. <version>1.9.11</version>
  300. </dependency>
  301. <!-- shiro -->
  302. <dependency>
  303. <groupId>org.apache.shiro</groupId>
  304. <artifactId>shiro-core</artifactId>
  305. <version>${shiro.version}</version>
  306. </dependency>
  307. <dependency>
  308. <groupId>org.apache.shiro</groupId>
  309. <artifactId>shiro-web</artifactId>
  310. <version>${shiro.version}</version>
  311. </dependency>
  312. <dependency>
  313. <groupId>org.apache.shiro</groupId>
  314. <artifactId>shiro-spring</artifactId>
  315. <version>${shiro.version}</version>
  316. </dependency>
  317. <dependency>
  318. <groupId>org.apache.shiro</groupId>
  319. <artifactId>shiro-ehcache</artifactId>
  320. <version>${shiro.version}</version>
  321. </dependency>
  322. <!-- my custom ehcache-->
  323. <dependency>
  324. <groupId>net.sf.ehcache</groupId>
  325. <artifactId>ehcache-core</artifactId>
  326. <version>2.4.1</version>
  327. </dependency>
  328. <dependency>
  329. <groupId>org.apache.shiro</groupId>
  330. <artifactId>shiro-aspectj</artifactId>
  331. <version>${shiro.version}</version>
  332. </dependency>
  333. <dependency>
  334. <groupId>org.apache.shiro</groupId>
  335. <artifactId>shiro-quartz</artifactId>
  336. <version>${shiro.version}</version>
  337. </dependency>
  338. <!-- shiro cas -->
  339. <dependency>
  340. <groupId>org.apache.shiro</groupId>
  341. <artifactId>shiro-cas</artifactId>
  342. <version>${shiro.version}</version>
  343. </dependency>
  344. <!-- thymeleaf-shiro -->
  345. <dependency>
  346. <groupId>com.github.theborakompanioni</groupId>
  347. <artifactId>thymeleaf-extras-shiro</artifactId>
  348. <version>1.1.0</version>
  349. </dependency>
  350. <!-- thymeleaf -->
  351. <dependency>
  352. <groupId>org.thymeleaf</groupId>
  353. <artifactId>thymeleaf</artifactId>
  354. <version>${thymeleaf.version}</version>
  355. </dependency>
  356. <dependency>
  357. <groupId>org.thymeleaf</groupId>
  358. <artifactId>thymeleaf-spring3</artifactId>
  359. <version>${thymeleaf-spring.version}</version>
  360. </dependency>
  361. <!-- freemarker <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.19</version> </dependency> -->
  362. <!-- PostgreSQL -->
  363. <dependency>
  364. <groupId>postgresql</groupId>
  365. <artifactId>postgresql</artifactId>
  366. </dependency>
  367. <!-- mysql -->
  368. <dependency>
  369. <groupId>mysql</groupId>
  370. <artifactId>mysql-connector-java</artifactId>
  371. </dependency>
  372. <dependency>
  373. <groupId>c3p0</groupId>
  374. <artifactId>c3p0</artifactId>
  375. <version>0.9.1.2</version>
  376. </dependency>
  377. <dependency>
  378. <groupId>ant</groupId>
  379. <artifactId>ant</artifactId>
  380. <version>1.4.1</version>
  381. </dependency>
  382. <dependency>
  383. <groupId>net.lingala.zip4j</groupId>
  384. <artifactId>zip4j</artifactId>
  385. <version>1.3.1</version>
  386. </dependency>
  387. </dependencies>
  388. <build>
  389. <finalName>core</finalName>
  390. <plugins>
  391. <plugin>
  392. <groupId>org.apache.maven.plugins</groupId>
  393. <artifactId>maven-compiler-plugin</artifactId>
  394. <configuration>
  395. <source>1.6</source>
  396. <target>1.6</target>
  397. </configuration>
  398. </plugin>
  399. </plugins>
  400. </build>
  401. </project>

** web -> pom.xml

  1. <?xml version="1.0"?>
  2. <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">
  3. <modelVersion>4.0.0</modelVersion>
  4. <parent>
  5. <groupId>com.rails</groupId>
  6. <artifactId>vehicle</artifactId>
  7. <version>1.0</version>
  8. </parent>
  9. <artifactId>web</artifactId>
  10. <packaging>war</packaging>
  11. <name>web</name>
  12. <url>http://maven.apache.org</url>
  13. <dependencies>
  14. <dependency>
  15. <groupId>com.rails</groupId>
  16. <artifactId>core</artifactId>
  17. </dependency>
  18. </dependencies>
  19. <build>
  20. <finalName>web</finalName>
  21. <plugins>
  22. <plugin>
  23. <groupId>org.apache.maven.plugins</groupId>
  24. <artifactId>maven-compiler-plugin</artifactId>
  25. <configuration>
  26. <source>1.6</source>
  27. <target>1.6</target>
  28. </configuration>
  29. </plugin>
  30. </plugins>
  31. </build>
  32. </project>

web.xml

web.xml文件赋予了web工程spring特性。是整个web工程配置的入口。用于引入模块配置,以及增加一些web的过滤器。

本工程将各模块配置分成不同的applicationContext-xxx。xml进行配置。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>web</display-name>
  4. <context-param>
  5. <param-name>webAppRootKey</param-name>
  6. <param-value>web.root</param-value>
  7. </context-param>
  8. <context-param>
  9. <param-name>patchConfigLocation</param-name>
  10. <param-value>
  11. /WEB-INF/applicationContext.xml
  12. </param-value>
  13. </context-param>
  14. <listener>
  15. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  16. </listener>
  17. <listener>
  18. <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  19. </listener>
  20. <listener>
  21. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  22. </listener>
  23. <!-- log4j <context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/classes/log4j.properties</param-value> </context-param>-->
  24. <filter>
  25. <filter-name>CharacterEncodingFilter</filter-name>
  26. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  27. <init-param>
  28. <param-name>encoding</param-name>
  29. <param-value>UTF-8</param-value>
  30. </init-param>
  31. <init-param>
  32. <param-name>forceEncoding</param-name>
  33. <param-value>true</param-value>
  34. </init-param>
  35. </filter>
  36. <filter-mapping>
  37. <filter-name>CharacterEncodingFilter</filter-name>
  38. <url-pattern>/*</url-pattern>
  39. </filter-mapping>
  40. <!-- filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping -->
  41. <servlet>
  42. <servlet-name>dispatcher</servlet-name>
  43. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  44. <init-param>
  45. <param-name>contextConfigLocation</param-name>
  46. <param-value>
  47. /WEB-INF/applicationContext-servlet.xml
  48. </param-value>
  49. </init-param>
  50. <load-on-startup>1</load-on-startup>
  51. </servlet>
  52. <servlet-mapping>
  53. <servlet-name>dispatcher</servlet-name>
  54. <url-pattern>/*</url-pattern>
  55. </servlet-mapping>
  56. <servlet>
  57. <servlet-name>JerseyServlet</servlet-name>
  58. <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
  59. <init-param>
  60. <param-name>com.sun.jersey.config.property.packages</param-name>
  61. <param-value>org.company</param-value>
  62. </init-param>
  63. </servlet>
  64. <servlet-mapping>
  65. <servlet-name>JerseyServlet</servlet-name>
  66. <url-pattern>/api/*</url-pattern>
  67. </servlet-mapping>
  68. </web-app>

applicationContext

  • springMVC管理web - applicationContext-servlet.xml

    <?xml version=”1.0” encoding=”UTF-8”?>

  1. <!-- 只扫描Controller 注解 -->
  2. <context:component-scan base-package="org.company.web" use-default-filters="false">
  3. <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
  4. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
  5. </context:component-scan>
  6. <!-- Allow annotation driven controllers -->
  7. <mvc:annotation-driven />
  8. <!-- 配置js,css等静态文件直接映射到对应的文件夹,不被DispatcherServlet处理 -->
  9. <mvc:resources location="/resources/" mapping="/resources/**" />
  10. <mvc:resources location="/resources/js/" mapping="/js/**" />
  11. <mvc:resources location="/resources/css/" mapping="/css/**" />
  12. <mvc:resources location="/resources/images/" mapping="/images/**" />
  13. <mvc:resources location="/resources/fonts/" mapping="/fonts/**" />
  14. <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
  15. <property name="prefix" value="/WEB-INF/page/" />
  16. <property name="suffix" value=".html" />
  17. <property name="templateMode" value="XHTML" />
  18. <property name="cacheable" value="false" /><!-- 是否开启缓存,开发模式下关闭,部署时应该打开 -->
  19. <property name="characterEncoding" value="UTF-8" />
  20. </bean>
  21. <bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
  22. <property name="templateResolver" ref="templateResolver" />
  23. <property name="additionalDialects">
  24. <set>
  25. <bean class="at.pollux.thymeleaf.shiro.dialect.ShiroDialect" />
  26. </set>
  27. </property>
  28. </bean>
  29. <bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
  30. <property name="templateEngine" ref="templateEngine" />
  31. <property name="order" value="1" />
  32. <property name="characterEncoding" value="UTF-8" />
  33. </bean>
  34. <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
  35. <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
  36. <property name="supportedMediaTypes">
  37. <list>
  38. <value>text/html;charset=UTF-8</value>
  39. </list>
  40. </property>
  41. </bean>
  42. <!-- 配置 文件上传的支持 ,最大上传文件大小1G -->
  43. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  44. <property name="maxUploadSize" value="1024000000" />
  45. <property name="resolveLazily" value="true" />
  46. <property name="maxInMemorySize" value="4096" />
  47. </bean>
  48. <!-- 采用SpringMVC自带的JSON转换工具,支持@ResponseBody注解 -->
  49. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  50. <property name="messageConverters">
  51. <list>
  52. <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
  53. </list>
  54. </property>
  55. </bean>
  56. </beans>
  • spring数据与逻辑

    ** applicationContext.xml

    <?xml version=”1.0” encoding=”UTF-8”?>

  1. <import resource="applicationContext-datasource.xml" />
  2. <!-- 加载*.properties File -->
  3. <bean id="webConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  4. <property name="locations">
  5. <list>
  6. <value>classpath:*.properties</value>
  7. </list>
  8. </property>
  9. </bean>
  10. <!-- 扫描的包路径 去掉mvc的注解 -->
  11. <context:component-scan base-package="org.company">
  12. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
  13. </context:component-scan>
  14. <import resource="applicationContext-ehcache.xml" />
  15. <!-- AOP 的最终配置 -->
  16. <!-- BEAN与find/get 拦截器关联 -->
  17. <bean id="myService" class="org.springframework.aop.framework.ProxyFactoryBean">
  18. <property name="target">
  19. <ref local="testTableServiceBean" />
  20. </property>
  21. <property name="interceptorNames">
  22. <list>
  23. <value>methodCachePointCut</value>
  24. <value>methodCachePointCutAdvice</value>
  25. </list>
  26. </property>
  27. </bean>
  28. <!-- 拦截BEAN -->
  29. <bean id="testTableServiceBean" class="org.company.core.moduel.service.TestTableServiceImpl">
  30. </bean>
  31. </beans>
  32. ** applicationContext-database.xml
  33. <?xml version="1.0" encoding="UTF-8"?>
  34. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
  35. <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  36. <property name="dataSource" ref="dataSource" />
  37. <property name="persistenceProvider" ref="persistenceProvider" />
  38. <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
  39. <property name="jpaDialect" ref="jpaDialect" />
  40. <property name="jpaProperties">
  41. <props>
  42. <prop key="hibernate.show_sql">true</prop>
  43. </props>
  44. </property>
  45. <property name="packagesToScan">
  46. <list>
  47. <value>org.company.core</value>
  48. </list>
  49. </property>
  50. </bean>
  51. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  52. <property name="driverClass" value="com.mysql.jdbc.Driver" />
  53. <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/webdata?characterEncoding=utf-8" />
  54. <property name="user" value="root" />
  55. <property name="password" value="123456" />
  56. </bean>
  57. <bean id="persistenceProvider" class="org.hibernate.ejb.HibernatePersistence" />
  58. <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  59. <property name="generateDdl" value="true" />
  60. <property name="database" value="MYSQL" />
  61. </bean>
  62. <bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
  63. <context:annotation-config />
  64. <!--事务管理Bean -->
  65. <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
  66. <property name="entityManagerFactory" ref="entityManagerFactory" />
  67. </bean>
  68. <!--说明事务的配置使用的注解方式 -->
  69. <tx:annotation-driven transaction-manager="transactionManager" />
  70. </beans>
  71. ** applicationContext-ehcache.xml
  72. <?xml version="1.0" encoding="UTF-8"?>
  73. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
  74. <!-- Ehcache -->
  75. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
  76. </bean>
  77. <bean id="demoCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
  78. <property name="cacheManager" ref="cacheManager" />
  79. <property name="cacheName">
  80. <value>MYCACHE</value>
  81. </property>
  82. </bean>
  83. <context:annotation-config />
  84. <aop:aspectj-autoproxy proxy-target-class="true"/>
  85. <!-- find/create cache拦截器 -->
  86. <bean id="methodCacheInterceptor" class="org.company.core.common.interceptor.MethodCacheInterceptor">
  87. <property name="cache">
  88. <ref local="demoCache" />
  89. </property>
  90. </bean>
  91. <!-- flush cache拦截器 -->
  92. <bean id="methodCacheAfterAdvice" class="org.company.core.common.interceptor.MethodCacheAfterAdvice">
  93. <property name="cache">
  94. <ref local="demoCache" />
  95. </property>
  96. </bean>
  97. <!-- find/get cache拦截器方法匹配 -->
  98. <bean id="methodCachePointCut" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
  99. <property name="advice">
  100. <ref local="methodCacheInterceptor" />
  101. </property>
  102. <property name="patterns">
  103. <list>
  104. <value>org.company.core.*.service.*find.*</value>
  105. </list>
  106. </property>
  107. </bean>
  108. <!-- flush 拦截器方法匹配 -->
  109. <bean id="methodCachePointCutAdvice" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
  110. <property name="advice">
  111. <ref local="methodCacheAfterAdvice"/>
  112. </property>
  113. <property name="patterns">
  114. <list>
  115. <value>org.company.core.*.service.*create.*</value>
  116. <value>org.company.core.*.service.*update.*</value>
  117. <value>org.company.core.*.service.*delete.*</value>
  118. </list>
  119. </property>
  120. </bean>
  121. </beans>

实现效果如图:

这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,270人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringMVC框架

    框架项目请跳转到: [springMVC][] 本文在他人框架配置文件的基础上,学习Spring框架的知识,同时也结合多篇博文对框架进行改进与增加工鞥,比如缓存、多数据源以及