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>

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;
}

  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) {
// 产生ID
Integer 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();
} }

  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 { @Autowired
private StudentRepository studentRepository; @GetMapping
public Collection<Student> findAll() {
return studentRepository.findAll();
} @PostMapping
public Student save(@RequestBody Student student) {
return studentRepository.save(student);
} @GetMapping(value = "/connect")
public String connect() {
String result = "前后端连接成功";
log.info(result);
return result;
} }

  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

    

      

  

  

SpringBoot23 分模块开发的更多相关文章

  1. Maven02——回顾、整合ssh框架、分模块开发、私服

    1 回顾 1.1 Maven的好处 节省空间 对jar包做了统一管理 依赖管理 一键构建 可跨平台 应用在大型项目可提高开发效率 1.2 Maven安装部署配置 1.3 Maven的仓库 本地仓库 远 ...

  2. SSH框架分模块开发

    ------------------siwuxie095 SSH 框架分模块开发 1.在 Spring 核心配置文件中配置多个内容,容易造成 配置混乱,不利于维护 「分模块开发主要针对 Spring ...

  3. Spring_day04--HibernateTemplate介绍_整合其他方式_Spring分模块开发

    HibernateTemplate介绍 1 HibernateTemplate对hibernate框架进行封装, 直接调用HibernateTemplate里面的方法实现功能 2 HibernateT ...

  4. Struts2_day01--Struts2的核心配置文件_常量配置_分模块开发_Action编写方式

    Struts2的核心配置文件 1 名称和位置固定的 2 在配置文件中主要三个标签 package.action.result,标签里面的属性 标签package 1 类似于代码包,区别不同的actio ...

  5. Struts2分模块开发

    -------------------siwuxie095 Struts2 分模块开发 在实际开发中,如果一个项目是团队开发的,也就是很多人开发的, 每个人都需要去修改 struts.xml,因为 s ...

  6. java使用maven项目(二)分模块开发

    1       整合ssh框架 1.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 1.2     依赖版本冲突的解决 1.  第 ...

  7. spring+springmvc+hibernate架构、maven分模块开发样例小项目案例

    maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准 ...

  8. ssm集成(maven)& 分模块开发--详细教程

    1 maven版本的ssm 1.1 最简单的版本步骤: (1) 创建maven web项目 (2) 在pom.xml中导入依赖的jar包 (3) 再写配置文件: web.xml <!DOCTYP ...

  9. 七 Spring的分模块开发的配置,保存客户案例

    Spring的分模块开发的配置 加载配置文件的时候,加载多个 在一个配置文件中引入多个配置文件(常用) 保存客户案例 applicationContext.xml: <?xml version= ...

随机推荐

  1. Android tcpdump 使用

    /************************************************************************** * Android tcpdump 使用 * 说 ...

  2. better1【模式】Module模式

    var myModule = (function($, _) { var privateVariable = "Hello World" var pulicProperty = & ...

  3. Java [Leetcode 347]Top K Frequent Elements

    题目描述: Given a non-empty array of integers, return the k most frequent elements. For example,Given [1 ...

  4. 十九、python沉淀之路--装饰器

    一.实现装饰器的预备知识 装饰器 = 高阶函数 + 函数嵌套 + 闭包 1.高价函数定义: 1.函数接收的参数是一个函数名    2.函数的返回值是一个函数名    3.满足上述条件任意一个,都可称之 ...

  5. fn project AWS Lambda 格式 functions

      Creating Lambda Functions Creating Lambda functions is not much different than using regular funct ...

  6. 讲解JSP自定义标签

    一.基本概念 1.标签(Tag) 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本.由于标签是XML元素,所以它的名称和属性都是大小 ...

  7. (转)java.lang.RuntimeException: Missing type parameter

    java.lang.RuntimeException: Missing type parameter (2015-04-07 14:35:51)   分类: 技术 程序中用到了gson的new typ ...

  8. CentOS6安装vsftpd

    练习:完成vsftpd配置 (1) 禁锢系统用户于家目录 [root@node3 ~]# yum -y install vsftpd [root@node3 ~]# vim /etc/vsftpd/v ...

  9. 苹果手机 iTunes 资料备份到另一手机

    百度教程 https://jingyan.baidu.com/article/d621e8da332e602865913f8e.html 直接使用iTunes将老手机的资料备份, (可能需要关闭手机定 ...

  10. (转)Oracle中动态SQL详解

    本文转载自:http://www.cnblogs.com/gaolonglong/archive/2011/05/31/2064790.html 1.静态SQLSQL与动态SQL Oracle编译PL ...