1 开发环境说明

  JDK:1.8

  MAVEN:3.5

  IDEA:2017.2.5

  SpringBoot:2.0.3.RELEASE

2 创建SpringBoot项目

  2.1 项目信息

  2.2 添加项目依赖

  2.3 修改pom文件

    添加lombok依赖、修改devtools、修改plugin

<?xml version="1.0" encoding="UTF-8"?>
<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"><modelVersion>4.0.0</modelVersion><groupId>cn.xiangxu</groupId><artifactId>module-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>module-demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.0</version><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork></configuration></plugin></plugins></build></project>

View Code

3 逻辑功能实现

  实现简单的增删改查,利用map来模拟内存数据库

  3.1 包结构

  3.2 model层

package cn.xiangxu.moduledemo.model;import lombok.Data;/*** @author 王杨帅* @create 2018-07-26 22:16* @desc 学生实体类**/
@Data
public class Student {private Integer id;private String name;
}

View Code

  3.3 repository层

package cn.xiangxu.moduledemo.repository;import cn.xiangxu.moduledemo.model.Student;
import org.springframework.stereotype.Repository;import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;/*** @author 王杨帅* @create 2018-07-26 22:17* @desc 学生持久层**/
@Repository
public class StudentRepository {/*** 利用Map模拟内存数据库*/private final ConcurrentMap<Integer, Student> repository =new ConcurrentHashMap<>();/*** 主键发生器*/private final static AtomicInteger idGenerator = new AtomicInteger();/*** 新增* @param student* @return*/public Student save(Student student) {// 产生IDInteger id = idGenerator.incrementAndGet();student.setId(id);student.setName(student.getName() + id);repository.put(id, student);return student;}/*** 获取列表* @return*/public Collection<Student> findAll() {return repository.values();}}

View Code

  3.4 web层

package cn.xiangxu.moduledemo.controller;import cn.xiangxu.moduledemo.model.Student;
import cn.xiangxu.moduledemo.repository.StudentRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.Collection;/*** @author 王杨帅* @create 2018-07-26 22:23* @desc 学生控制层**/
@RestController
@RequestMapping(value = "/student")
@Slf4j
public class StudentController {@Autowiredprivate StudentRepository studentRepository;@GetMappingpublic Collection<Student> findAll() {return studentRepository.findAll();}@PostMappingpublic Student save(@RequestBody Student student) {return studentRepository.save(student);}@GetMapping(value = "/connect")public String connect() {String result = "前后端连接成功";log.info(result);return result;}}

View Code

  3.5 启动应用并进行测试

    》新增

    》查询列表

  3.6 打包

    进入到项目根目录执行:mvn -Dmaven.test.skip -U clean package

    技巧01:执行完后会在根目录下的target目录下生成class文件和打包文件

  3.7 执行jar包

    技巧01:进入到jar包所在文件夹执行:java -jar jar包名称

  3.8 重复3.5操作

4 分模块

  需求:在上面的例子中,将model、repository、controller都写在了一个模块中;现在需要将它们写在不同的模块中

  4.1 修改当前项目的pom.xml文件

    将打包方式从jar改成pom,让当前项目作为主模块

  4.2 新建一个web模块

    技巧01:右键单击主模块根文件夹 -> module -> maven

    技巧02:子模块创建成功后会放在父模块根目录下

    技巧03:新建完成后,在主模块中会出现子模块的相关信息,在子模块中也会将主模块作为父模块

  4.2.1 代码移动

    技巧01:设置子模块的文件夹, 左键单击子模块文件夹 -> file菜单 -> projectstructure

    技巧02:将父模块中的src的java文件中的所哟文件移动到web模块中src的java文件中,resources和test做类似的操作

    技巧03:直接利用鼠标选中拖动就行啦,弹出的提示框要选择移动所有选项;再次弹出的选择continue

    技巧04:移动完成后刷新maven

    技巧05:刷新maven后进入到主函数启动应用进行测试

  4.3 创建model模块和repository模块

    将model相关的移动到model模块,将repository相关的移动到repository模块

    技巧01:包名要保持一致,这样是为了不用改动代码

    坑01:移动完成后会有代码报错,因为repository依赖model,web又依赖repository

    解决01:在repository模块中引入model依赖,在web模块中引入repository依赖

    技巧02:依赖引入后刷新maven

    技巧03:找到main函数启动测试

5 打包

  5.1 进入到主模块执行:mvn -Dmaven.test.skip -U clean package

    -Dmaven.test.skip -> 跳过测试

    -U -> 更新包

    clean -> ??

    坑01:提示找不到main函数

    解决01:在maven插件中添加main函数的路径【注意:maven插件的相关信息在主模块的pom.xml中,而main函数在web模块中】

    坑02:再次启动时提示一些包找不到

    原因02:maven相关配置和main函数不在一个模块时就会报这种错误

    解决02:将maven相关的配置信息移动到main函数所在的那个模块【本案例是将主模块中的maven配置信息移动到web模块中去】

    技巧01:移动完后再次执行 mvn -Dmaven.test.skip -U clean package

  5.2 通过jar包启动应用

    技巧01:由于maven的相关配置在web模块下,所以产生的jar信息在web模块下的target文件中

    技巧02:进入到web模块的target文件夹,启动相关jar包即可

  5.3 重复3.5操作

6 分模块后的源代码

·下面是我的公众号二维码,欢迎关注·

尋渝記

微信号:xyj_fury

    

      

  

  

转载于:https://www.cnblogs.com/NeverCtrl-C/p/9375107.html

SpringBoot23 分模块开发相关推荐

  1. Flash分模块开发,Flash分模块加载,以及使用Flex经行游戏开发!

    目前我主要使用的flash,ActionScript开发IDE为:Flex builder3/4,Flash CS3/4,FlashDevelop3. 一个游戏项目:如果不分模块开发,一个主程序会是相 ...

  2. 02-Maven高级-分模块开发、依赖传递、聚合、继承(SpringBoot的部分底层原理)、多模块开发(环境切换)、Nexus私服搭建与使用

    文章目录 学习目标 一.分模块开发与设计 1. 分模块开发的意义 问题导入 模块拆分原则 2. 分模块开发(模块拆分) 问题导入 2.1 创建Maven模块 2.2 书写模块代码 2.3 通过mave ...

  3. Maven分模块开发,执行指令失败:‘modules.module[5]‘ specifies duplicate child module health_jobs @ line 16, column

    问题描述: Maven工程分模块开发完成 父工程执行install命令后 控制台报出以下错误: 问题分析: 在父工程的pom.xml 文件中,指定了重复了子模块 <module>healt ...

  4. mean项目的分模块开发

    全文字版: 新建maven工程在,作为父工程用于最后集合使用,该工程不需要src,只需要一个pom.xml文件,规定一下依赖版本之类的,再建一个工具类的工程,不需要放配置文件,和工程中方法接口有关的不 ...

  5. 引入其他配置文件(分模块开发)

    实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载 <impor ...

  6. 分模块开发创建父工程——(六)

    父工程创建选择pom打包方式.dao与service选择jar,web层选择war.dao与service必须为jar,依赖说的就是对jar包的依赖. 1.选择新建pom工程 2.创建好的工程结构 3 ...

  7. ssm_maven idea分模块开发

    一.操作步骤 1.创建Maven父工程 2.配置pom.xml 3.install到仓库 5.创建dao层,配置pom.xml(配置打包方式,依赖父工程) 6.install到仓库 可跳过测试 7.创 ...

  8. Springboot分模块开发详解(2):建立子工程

    1.创建base-entity 选中base工程,右键创建一个新的maven工程 自动选择了base这个目录存放子工程 创建后,pom.xml修改成如下内容: <?xml version=&qu ...

  9. 第四章 Lua模块开发

    在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发:而且模块化是高性能Lua应用的关键.使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每 ...

  10. idea如何做到多模块开发项目

    首先,推荐两个不错的后台系统模板,非常的不错,力荐. 1.码云地址:BootDo后台管理系统 2.码云地址:若依后台管理系统 因为之前一直在用BootDo后台管理系统模板,一直是在一个项目中开发.后来 ...

最新文章

  1. Lucene.net: the main concepts
  2. Arm 十年重磅发布 v9 架构,不受 EAR 约束,未来将覆盖 3000 亿颗芯片
  3. 一个简单的Java范例
  4. php在线客服系统源码_在线客服系统物流行业解决方案
  5. 点云三角化之后还能贴图嘛_雪糕化了之后重新冷冻还能吃吗?宁波这个实验真相了!...
  6. 大型网站后台架构的演变
  7. 无法初始化sftp协议。主机是sftp服务器吗?_WinSCP v5.15.3 免费的 开源图形化 SFTP 客户端...
  8. asterisk 互联
  9. [leetcode ]429. N-ary Tree Level Order Traversale (easy)
  10. Node Sass version 6.0.0 is incompatible with ^4.0.0.
  11. Python: names, values, assignment and mutability
  12. std::deque的使用
  13. 串口和并口通信1-概念
  14. 半监督学习方法:协同训练
  15. 硬件/操作系统/网络(九):了解常见linux服务器硬件配置
  16. PC 版微信多开防撤回软件
  17. IPUDN(用于单幅图像去雾的透射图和大气光导迭代更新器网络)CVPR_2020
  18. bzoj 2081: [Poi2010]Beads 哈希
  19. Pytorch神经网络极简入门(回归)
  20. 搜索的艺术——搜索引擎使用心得

热门文章

  1. MPLS virtual private network PE-CE之间的路由协议(静态、RIP、IS-IS)
  2. Redis详解(二)——Redis基本操作
  3. RSTP比STP快在哪?
  4. Grafana v6.0.0 发布,系统指标监控与分析平台
  5. php 获取TZ时间格式
  6. 安装配置NTP服务器
  7. C#之SqlDependency数据库缓存
  8. ie6对postion:fixed的完美解决方案
  9. socket编程:简单的TCP客户端
  10. 科多大数据_redis缓存的简单使用—科多大数据