# springboot2.0demo **Repository Path**: meetu/springboot2.0demo ## Basic Information - **Project Name**: springboot2.0demo - **Description**: springboot 2.0 demo project - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-05-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springboot2.0demo readme > springboot2.0 demo program ## 1.运行及打包 1. 本地调试直接运行DemoApp.java 由于spring-dev-tools的作用.修改文件会自动重启,便于调试, 1. 使用了maven profile 1. 运行 - mvn exec:java -Dexec.mainClass=com.example.demo.DemoApp (-Plocal/qa/prod) - mvn spring-boot:run (-Plocal/qa/prod) 1. 打(jar/war)包 - mvn package (-Plocal/qa/prod) - 在pom文件顶部jarwar切换打包模式 1. 集成swagger2 [api doc](http://localhost:8080/swagger-ui.html) ## 2.技术应用(见pom.xml) - springboot2.0 - mybatis - redis此处只作为数据库缓存,方便切换为其他缓存工具如ehcache... - atomikos / xaDataSource 多数据源事务 - quartz 未深度集成 - jms(activemq) - log4j2 - springboot-actuator - swagger2 ## 3. 0723会议讨论的项目分层及各层说明如下: 1. table -- 数据库中的表 2. entity -- 和数据库中的表一一对应,严格匹配 3. mapper -- entity的增删改查 -- 包括mapper.xml 4. wrapper 取消 -- 相比于mapper的单表操作,wrapper是多表操作,这些代码移到bean中 5. bean -- 业务对象,包含数据及行为。持有多个entity,多个mapper -- bean 提供 initialize() / initialize(id),save 方法 6. service -- 跨bean的业务,接受controler输入,组织bean处理输入,返回处理结果给controller 7. controller -- 对外提供服务 也许我的理解有偏差,如有不对,请补充,谢谢! ## 4. 开发demo中遇到的问题 > 我以AMP中Story,StoryContent,StoryToGeography为场景,周三会议讨论的程序结构为参考做了一个小demo 1. 如果想像类似Hibernat级联那样操作一个bean的更新,实现起来比较麻烦,实现代码参考StoryBean.updateFullStoryBean() 1. bean的行为定义在bean类中,一定会涉及数据库操作,那么因为@Transactional加在service上,所以依然需要从service作为入口调用bean的行为 - 导致的问题是:在service中会一直使用new StoryBean().xx()方法,不舒服 1. Bean会集成有关系的Entity,组合数据结构.随时会获取,创建,修改,销毁bean.所以bean不应该被spring管理 - 导致的问题是: 需要显式的在bean中用application获取其他wrapper 1. 需要添加wrapper层 - wrapper负责注入多个mapper,并在wrapper层添加缓存实现,然后将wrapper作为CRUD统一实现在bean中以ApplicationContext.getBean()的形式获取 - 我觉得wrapper在必要时也可以注入到service中