# gift
**Repository Path**: accuser/gift
## Basic Information
- **Project Name**: gift
- **Description**: gift项目是http://git.oschina.net/accuser/giftmail项目的模块拆分,涉及到了Spring管理的web项目的多种技术,具体技术栈有比较详细的说明,每隔一段时间,我会更新一次内容,为了更好的持续下去,欢迎使用的朋友讨论学习!
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2017-09-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### gift 是 giftmail项目的模块化更细致的划分.
######################此项目是基于Maven+Jetty启动,在每次用jetty启动之前,使用Maven clean,Maven install编译#################
技术栈:
一.spring + springmvc 4.1.1
二.mybatis 3.2.8
三.spring + redis 2.7.1
四.quartz 2.2.1
五.druid 1.0.9
六.logback 1.2.3
七.freemarker 2.3.23
八.maven + nexus
九.系统拦截器
十.面向切面的对session的保存入库
十一.分页拦截器
十二.Excel org.wuwz.ExcelKit 1.1(开源贡献者)
十三.微信支付-java端获取预支付ID
十四.将原来一个Maven项目,拆分成按照模块多个Maven项目来管理
十五.增加了spring对ActiveMQ的基础管理
13.截止到2017.9.13日将原来的项目 http://git.oschina.net/accuser/giftmail 拆分成多个模块,分别由giftmail-parent,giftmail-common,giftmail-dao,giftmail-service,giftmail-web组成.
giftmail-common
giftmail-dao
giftmail-service
giftmail-web
14.在giftmail-web的pom.xml中,增加了jetty插件.
Base directory : ${workspace_loc:/giftmail-web}
Goals : jetty:run
附带一篇Maven工程模块化划分方法:
1.Maven的父工程的packaging类型需要使用pom,所以,在先创建新的maven project,选择"Create a simple project".
2.填写GAV,G:cn.giftmail A:giftmail-parent V:0.0.1-SNAPSHOT ,选择packaging为pom,此时生成的pom.xml文件应该是这样的:
4.0.0
cn.giftmail
giftmail-parent
0.0.1-SNAPSHOT
pom
giftmail-common
giftmail-dao
giftmail-service
giftmail-web
giftmail-web
maven-compiler-plugin
3.0
1.7
1.7
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
3.创建各个子模块,各模块之间通过webservice通信.简单创建common,dao,service,web模块.除了web模块的packaging类型是war,其他的都是jar,前三个创建的时候选择"quickstart",后一个创建的时候选择"webapp".
4.鼠标右键父工程,使用"maven module",各pom.xml文件见项目详情.
5.maven依赖的jar,我暂时都放在了giftmail-parent的pom.xml中,这样好处在于在依赖关系上不会出现循环依赖的问题.
6.giftmail-common模块是一些基础类库 + 工具类 + 并且不涉及到业务的类 eg:系统日志监控,Excel导出,微信支付,session拦截,分页拦截器,自定义任务quartz等,在common模块中,也符合MVC模型,但与业务模块相对是独立的.
7.业务模块的MVC模型,分别位于dao,service,web中(不再赘述原因),但将model层放在了common模块中的原因是:有部分公共类也会对model对象进行依赖,由于dao依赖common,service依赖dao,web依赖service,进而将model层放在common中,即可使dao,service,web都可以依赖到model层.
15.截止到2017.9.21日增加了spring对ActiveMQ的基础管理(生产者发送的消息是String文本类型的message)
增加spring对MQ的消息监听有三种,此配置SessionAwareMessageListener监听器(在原来MessageListener基础之上扩展了消息通知对方已经收到此消息的功能)
增加spring对MQ的消息监听有三种,此配置MessageListenerAdapter监听器(在原来MessageListener和SessionAwareMessageListener基础之上扩展了将接收到的消息进行类型转换,然后通过反射的形式把它交给一个普通的Java类进行处理)
修改了spring对MQ的MessageListenerAdapter消息监听,增加了在消息监听器中对回应ResponseQueueListener类,配置了返回的消息的目的地.
既可以将消息进行事务管理,也可以将消息事务和数据库事务,联合在一起做事务绑定.(本部分未提供代码,参考收藏的内容)