范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

框架搭建单体应用服务之SSM整合Spring4SpringMvcMybatis

  作者:小傅哥
  博客:https://bugstack.cn
  沉淀、分享、成长,让自己和他人都能有所收获! 前言介绍
  在实际的业务开发中按照不同的场景需要,会有不同的业务架构也就同时会有不同的技术框架来支撑。那么这个专题想把一些常用的框架整理下,方便平时使用的同时也做一些技术沉淀。那么本章节会先搭建一个比较适合个人项目或者一些小公司开发项目的单体架构模型。服务功能展示页面如下;
  工程环境JDK1.8 Maven 3.2.3 Spring 4.3.24.RELEASE + SpringMvc + Mybatis 3.3.0 Mysql 5.6 + dbcp2 layui 2.5.4 工程模型
  整体的工程模型采用DDD四层架构,相对于MVC模式来讲。嗯!相当于家里三居换四居了! itstack-demo-frame-ssm └── src     ├── main     │   ├── java     │   │   └── org.itstack.demo     │   │       ├── application      │   │       │   └── UserService.java      │   │       ├── domain     │   │       │   ├── model     │   │       │   │   ├── aggregates     │   │       │   │   │   └── UserInfoCollect.java     │   │       │   │   ├── req     │   │       │   │   │   └── UserReq.java       │   │       │   │   └── vo     │   │       │   │       └── UserInfo.java      │   │       │   ├── repository     │   │       │   │   └── IUserRepository.java      │   │       │   └── service      │   │       │       └── UserServiceImpl.java      │   │       ├── infrastructure     │   │       │   ├── common     │   │       │   │   ├── EasyResult.java     │   │       │   │   └── PageRequest.java     │   │       │   ├── dao     │   │       │   │   └── IUserDao.java      │   │       │   ├── po     │   │       │   │   └── User.java       │   │       │   └── repository     │   │       │       └── UserRepository.java      │   │       └── interfaces     │   │           └── UserController.java     │   ├── resources      │   │   ├── mapper     │   │   ├── props      │   │   ├── spring     │   │   ├── logback.xml     │   │   ├── mybatis-config.xml     │   │   └── spring-config.xml     │   └── webapp     │       ├── page     │       ├── res     │       ├── WEB-INF     │       ├── index.html     │       └── res_layui.html     └── test          └── java              └── org.itstack.demo.test                  └── ApiTest.java application应用层
  应用层是比较薄的一层,不做具体逻辑开发。本工程里只包括服务的定义,具体逻辑有领域层实现。如果需要扩展可以做一些应用服务编排。
  application/UserService.java & 定义接口 public interface UserService {      UserInfoCollect queryUserInfoList(UserReq req);  } domain领域层
  领域层是整个工程的核心服务层,这里负责处理具体的核心功能,完成领域服务。domain下可以有多个领域,每个领域里包括;聚合、请求对象、业务对象、仓储、服务。
  domain/model/aggregates/UserInfoCollect.java & 定义聚合查询结果 public class UserInfoCollect {      private Long count;     private List userInfoList;      public UserInfoCollect() {     }      public UserInfoCollect(Long count, List userInfoList) {         this.count = count;         this.userInfoList = userInfoList;     }      public Long getCount() {         return count;     }      public void setCount(Long count) {         this.count = count;     }      public List getUserInfoList() {         return userInfoList;     }      public void setUserInfoList(List userInfoList) {         this.userInfoList = userInfoList;     } }
  domain/repository/IUserRepository.java & 定义仓储服务 public interface IUserRepository {      UserInfoCollect queryUserInfoList(UserReq req);  }
  domain/service/UserServiceImpl.java & 对业务层功能进行实现 @Service("userService") public class UserServiceImpl implements UserService {      @Resource(name = "userRepository")     private IUserRepository userRepository;      @Override     public UserInfoCollect queryUserInfoList(UserReq req) {         return userRepository.queryUserInfoList(req);     }  } infrastructure基础层实现领域层仓储定义 数据库操作为非业务属性的功能操作 在仓储实现层进行组合装配DAO&Redis&Cache等
  infrastructure/dao/IUserDao.java & 数据库操作 public interface IUserDao {      List queryUserInfoList(UserReq req);      Long queryUserInfoCount(UserReq req);  }
  infrastructure/repository/UserRepository.java & 仓储功能实现如果有redis可以进行包装使用 @Repository("userRepository") public class UserRepository implements IUserRepository {      @Resource     private IUserDao userDao;      @Override     public UserInfoCollect queryUserInfoList(UserReq req) {         Long count = userDao.queryUserInfoCount(req);         List userList = userDao.queryUserInfoList(req);         List userInfoList = new ArrayList<>();         userList.forEach(user -> {             UserInfo userInfo = new UserInfo();             userInfo.setUserId(user.getId());             userInfo.setName(user.getName());             userInfo.setAge(user.getAge());             userInfo.setAddress(user.getAddress());             userInfo.setEntryTime(user.getEntryTime());             userInfo.setStatus(user.getStatus());             userInfoList.add(userInfo);         });         return new UserInfoCollect(count, userInfoList);     }  } interfaces接口层包装应用接口对外提供api,目前这一层比较简单只需要进行接口使用即可 如果是对外部提供服务接口,那么可以使用DTO方式进行转换,避免污染到业务类
  interfaces/UserController.java & 提供接口服务 @Controller @RequestMapping("/api/user/") public class UserController {      private Logger logger = LoggerFactory.getLogger(UserController.class);      @Resource     private UserService userService;      @RequestMapping(path = "queryUserInfoList", method = RequestMethod.GET)     @ResponseBody     public EasyResult queryUserInfoList(String json, String page, String limit) {         try {             logger.info("查询用户信息列表开始。json:{}", json);             UserReq req = JSON.parseObject(json, UserReq.class);             if (null == req) req = new UserReq();             req.setPage(page, limit);             UserInfoCollect userInfoCollect = userService.queryUserInfoList(req);             logger.info("查询用户信息列表完成。userInfoCollect:{}", JSON.toJSONString(userInfoCollect));             return EasyResult.buildEasyResultSuccess(userInfoCollect.getCount(), userInfoCollect.getUserInfoList());         } catch (Exception e) {             logger.error("查询用户信息列表失败。json:{}", json, e);             return EasyResult.buildEasyResultError(e);         }     }  } resource配置
  这里包括了Spring、SpringMvc、mybatis、以及日志信息的配置;
  mapper/User_Mapper.xml <?xml version="1.0" encoding="UTF-8"?>                 
  props/jdbc.properties & 数据库链接信息 db.jdbc.driverClassName=com.mysql.jdbc.Driver db.jdbc.url=jdbc:mysql://127.0.0.1:3306/itstack?createDatabaseIfNotExist=true&characterEncoding=utf-8&useUnicode=true db.jdbc.username=root db.jdbc.password=123456
  spring/spring-config-datasource.xml & dbcp2数据源配置以及扫描Mapper等 <?xml version="1.0" encoding="UTF-8"?>                                                                                                                                                                                                                                                
  resources/mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?>                           
  resources/spring-config.xml <?xml version="1.0" encoding="UTF-8"?>                                                              classpath:props/*.properties                                    itstack.sqlDROP TABLE user; CREATE TABLE user ( id bigint(11) NOT NULL AUTO_INCREMENT, name varchar(32), age int(4), address varchar(128), entryTime datetime, remark varchar(64), createTime datetime, updateTime datetime, status int(4) DEFAULT "0", PRIMARY KEY (id), INDEX idx_name (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into user (id, name, age, address, entryTime, remark, createTime, updateTime, status) values (1, "水水", 18, "吉林省榆树市黑林镇尹家村5组", "2019-12-22 00:00:00", "无", "2019-12-22 00:00:00", "2019-12-22 00:00:00", 0); insert into user (id, name, age, address, entryTime, remark, createTime, updateTime, status) values (2, "豆豆", 18, "辽宁省大连市清河湾司马道407路", "2019-12-22 00:00:00", "无", "2019-12-22 00:00:00", "2019-12-22 00:00:00", 1); insert into user (id, name, age, address, entryTime, remark, createTime, updateTime, status) values (3, "花花", 19, "辽宁省大连市清河湾司马道407路", "2019-12-22 00:00:00", "无", "2019-12-22 00:00:00", "2019-12-22 00:00:00", 0); 综上总结此工程模型基于SSM比较适合开发ERP服务,ERP使用layui页面清新,功能完善 工程框架采用了DDD架构模式,在此架构模式下可以更容易的开发系统,适应后比MVC更加方便 后续将继续拓展架构服务搭建,包括一些Dubbo、Redis、mq等使用,方便自己也方便他人

银保监会首次明确绿色保险定义并建立业务统计制度绿色保险政策体系不断健全日前,中国银保监会发布绿色保险业务统计制度的通知,首次对绿色保险进行定义。通知明确,绿色保险是指保险业在环境资源保护与社会治理绿色产业运行和绿色生活消费等方面提供风险保障和资金支持每天早上喝一杯咖啡的人,时间长了会怎么样?有什么注意事项?现在的人每天工作忙忙碌碌的,不仅晚上要加班赶任务,有些人一早起床就开始忙起来了,所以,很多人都希望早晨喝上一杯醇香浓郁的饮品,帮助提升心情,振奋精神,比如一杯咖啡就是一个不错的选择充分释放数据要素价值近期,各地加速推进数字经济,多个产业促进条例落地生效。发展数字经济,关键在数据要素市场化。十四五规划提出,要建立健全数据要素市场规则。今年6月份,中央全面深化改革委员会审议通过意见10月中国经济数据解读中国观察中国国家统计局11月15日发布的经济数据显示,10月经济恢复较9月有所放缓。不过,最近对疫情防控措施的进一步优化和房地产相关金融政策的微调可能使四季度经济数据上扬。我们的月度GDP君创基金及刘帅收警示函从事私募业务未妥善保存材料来源中国经济网近日,中国证监会深圳监管局网站公布的行政监管措施决定书(2022)192号193号显示,深圳前海君创基金管理有限公司(简称君创基金)在从事私募基金业务活动中,存在未妥牛角村被曝经营异常,网红品牌应扎实发展据红星新闻报道,网红烘焙品牌牛角村被曝经营异常,全国多家门店闭店或停止营业。其公司总部北京牛角村餐饮管理有限公司被市场监管部门列入经营异常名录,其董事长康健所持有的股权被冻结,牛角ST金洲连续财务造假建议启动强制退市程序日前,ST金洲公告称收到证监会下发的行政处罚及市场禁入事先告知书。告知书显示,因存在虚增利润与信披重大遗漏问题,证监会拟对上市公司丰汇租赁及相关责任人作出行政处罚,拟对实控人朱要文双榜双冠!徐工起重机蝉联全球榜首就在今日英国KHL发布ICM20全球最大起重机制造商排名2022全球工程机械50强峰会发布2022全球移动式起重机制造商10强排行榜徐工双榜第一强势蝉联全球起重机制造商榜首在国家双蚂蚁保换帅!蚂蚁集团副总裁张彧出任法定代表人董事长,邵文澜卸任丨大厂金融事记者苗艺伟近日,天眼查显示,蚂蚁集团旗下的蚂蚁保保险代理有限公司发生工商变更,法定代表人董事长由邵文澜均变更为张彧。这是继2021年4月邵文澜接替尹铭后,时隔近一年半,蚂蚁集团旗下2022中国5G工业互联网大会顺利落幕中国移动助力各产业转型升级11月21日,由工业和信息化部湖北省人民政府共同主办,以数融万物智创未来为主题的2022中国5G工业互联网大会结束最后一场分论坛,由此本届大会也顺利落下了帷幕。筑强数智根基,共绘5关注特斯拉股价创两年新低,马斯克净资产年内缩水超千亿美元文懂车帝原创彩丽美懂车帝原创行业日前,据外媒报道,随着特斯拉最新股价跌至两年以来的最低水平,特斯拉CEO马斯克在2022年的财富损失首次超过1000亿美元(约合人民币7135亿元)
京东老板娘章泽天简直是合照杀手,还有那万年不变的招牌式微笑章泽天,1993年11月18日出生于江苏省南京市,网络红人。2009年因一张手捧奶茶的照片走红网络,被称为奶茶妹妹。刘强东,男,汉族,1974年2月14日生,江苏宿迁人,京东老板创联想小新Pro142023酷睿版开启众筹,最高可选i713700HRTX3050!2月28日,联想官方开启了小新Pro142023酷睿版多款特殊配置的众筹,最高拥有着i713700H处理器RTX3050独显,同时还有32GB内存1TB储存空间,众筹价为7999元国轩高科牵手中国科大!2月27日,国轩高科与中国科学技术大学在合肥签订合作协议,双方将共建创新电池联合实验室,围绕创新锂电池技术,开展基础技术前瞻技术和关键技术研究,推动科技成果的转化应用与产业化。中科惠普电脑上的这个贴纸代表啥背后的硬核你想象不到Windows笔记本的用户肯定都对C面腕托上的那几个小贴纸不陌生,例如英特尔的酷睿标AMD的锐龙标以及英伟达的GeForce标。但是最近两年许多惠普笔记本的用户会发现自己的电脑多了东北老妹儿带你吃环境服务不咋地烧烤小店却是周边人气王大伙有没有去过这样的小神店?点菜!自己写!拿瓶水!自己拿!串儿给热一下!自己热反正就是除了烤这个环节其余全程自助人家到点就关门去晚了还没有桌今天东北老妹儿就带大家去这么一家串店据说男人不狠地位不稳秦始皇赵盘到了秦国,变成了嬴政,从这里开始,我认为寻秦记是很尊重历史的。甚至来说,前面是在搞笑,后面说的是正史。举荐太子嬴政做的第一件事情是复仇,用秦国的国力捉杀赵穆。春秋战国时期,伍子又一款千元机!三星GalaxyA144G上市后置50MP三摄手机中国新闻2月28日,手机中国获悉,三星GalaxyA144G已在该公司马来西亚网站正式上市。这款手机采用了水滴屏设计,后置竖排三摄像头,辅以侧面指纹解锁。此外,该机支持10W标上午龙头是豆油,下午龙头是菜油2023。03。03。1613星期五龙头战法,是股市里面一道美丽的风景线,虽然现在隔岸观火,但是移花接木,李代桃僵的话,龙头战法用到我的三桶油里面,也是一件非常美妙的事情。而且做期KgCaptcha行为验证码安全策略设置前言在验证码项目中,都会遇到验证码被恶意大量高频的调用,给服务造成很多无效的注册或登录,占用大量的系统资源。而我在想,有没有哪一款验证码产品可以设置黑白名单限制IP访问和设置风控异AMDRyzen97950X3D核显性能大幅提升3DVCache带来的额外好处AMD在新一代Ryzen7000系列上配备了核显,虽然GPU采用的是RDNA2架构,不过仅有2个CU,性能非常有限,是名副其实的亮机核显,几乎所有使用这些处理器的用户都不会在意核显狂飙收官仅一周,已有5位演员摊上事,张颂文也不禁查了?狂飙收官才过去一个星期,正准备二刷,好好推敲那些隐藏细节,不料一记重磅炸开了锅。狂飙特效演员涉毒,或许面临下架整改。刚听到消息的时候,我还没当回事,怎么可能呢?这可是现象级的扫黑剧