SpringBoot多模块项目框架搭建过程解析

作者:seliote 时间:2022-10-02 06:12:34 

这篇文章主要介绍了SpringBoot多模块项目框架搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

创建根项目,New Project 创建一个名为 sms-bomber 的 SpringBoot 新项目,打包为 JAR 的即可,这里只添加 Lombok 与 spring-boot-starter-web 依赖,这两个依赖会传递给所有子模块,删除创建完成的项目中的 .mvn\ src\ mvnw mvnw.cmd

创建启动模块,根目录项目名上右键 New -> Model 选择 Maven 类型,不要选择 create from archetype,Parent 属性选择刚才创建的根项目,先创建一个 ${PREFIXE}-start 的模块,用于启动项目,start 模块 resources 目录下创建


server:
servlet:
 # 项目上下文路径
 context-path: /sms-bomber

spring:
main:
 # 关闭 banner
 banner-mode: off
profiles:
 # 测试环境
 active: dev-mysql
 # 生产环境
 # active: prod-mysql

以及 logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

<!-- FIXME 记得更改如下配置 -->
 <!-- CONSOLE/FILE -->
 <property name="output-ref" value="CONSOLE" />
 <property name="logfile-dir" value="D:/Tmp/Log" />

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
   <encoder>
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
   </encoder>
 </appender>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <encoder>
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
     <charset>utf-8</charset>
   </encoder>
   <file>${logfile-dir}/ticket.log</file>
   <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
     <fileNamePattern>${logfile-dir}/ticket.%i.log</fileNamePattern>
     <minIndex>1</minIndex>
     <maxIndex>5</maxIndex>
   </rollingPolicy>
   <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
     <maxFileSize>1MB</maxFileSize>
   </triggeringPolicy>
 </appender>

<root level="INFO">
   <appender-ref ref="${output-ref}" />
 </root>
 <!-- 指定包的日志等级 -->
 <!-- 使用 additivity="true" 会同时使用 appender-ref -->
 <logger name="com.seliote.smsbomber" level="DEBUG" additivity="false">
   <appender-ref ref="${output-ref}" />
 </logger>

</configuration>

创建项目启动类


package com.seliote.smsbomber;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* 项目启动类
*
* @author LiYangDi
* @since 2020/1/26
*/
@SpringBootApplication(scanBasePackages = "com.seliote.smsbomber")
public class Application {

public static void main(String... args) {
   SpringApplication.run(Application.class, args);
 }
}

创建 Servlet 初始化类


package com.seliote.smsbomber;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
* 打 WAR 包 Servlet 初始化
*
* @author LiYangDi
* @since 2020/1/26
*/
public class ServletInitializer extends SpringBootServletInitializer {

@Override
 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
   return builder.sources(Application.class);
 }
}

修改 IDEA 的启动类,尝试启动项目

修改启动模块打包方式为 war, 修改启动模块的 pom.xml,project 节点下添加 <packaging>war</packaging> 与


<build>
 <plugins>
   <!-- 打包配置 -->
   <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
     <configuration>
       <!-- war 包名 -->
       <finalName>sms-bomber</finalName>
     </configuration>
   </plugin>
 </plugins>
</build>

建一个 TestCtr,maven package 一下把 war 扔进 Tomcat 里体验一下

创建模块 persistence, service, web, common 层模块层模块,并配置相关依赖,根项目 pom.xml 里添加依赖 project 节点下添加,再依次


<!-- 用于多模块版本管理 -->
<dependencyManagement>
 <dependencies>
   <dependency>
     <groupId>com.seliote</groupId>
     <artifactId>sms-bomber-common</artifactId>
     <version>${sms-bomber.version}</version>
   </dependency>
   <dependency>
     <groupId>com.seliote</groupId>
     <artifactId>sms-bomber-persistence</artifactId>
     <version>${sms-bomber.version}</version>
   </dependency>
   <dependency>
     <groupId>com.seliote</groupId>
     <artifactId>sms-bomber-service</artifactId>
     <version>${sms-bomber.version}</version>
   </dependency>
   <dependency>
     <groupId>com.seliote</groupId>
     <artifactId>sms-bomber-web</artifactId>
     <version>${sms-bomber.version}</version>
   </dependency>
   <dependency>
     <groupId>com.seliote</groupId>
     <artifactId>sms-bomber-start</artifactId>
     <version>${sms-bomber.version}</version>
   </dependency>
   <dependency>
     <groupId>org.mariadb.jdbc</groupId>
     <artifactId>mariadb-java-client</artifactId>
     <version>${mariadb.version}</version>
   </dependency>
 </dependencies>
</dependencyManagement>

dependencies 节点下添加用于全局模块使用


<dependency>
 <groupId>com.seliote</groupId>
 <artifactId>sms-bomber-common</artifactId>
</dependency>

${sms-bomber.version} 等版本定义在 properties 标签下定义

persistence 模块的 pom.xml 下添加依赖


<dependencies>
 <!-- MariaDB 驱动 -->
 <dependency>
   <groupId>org.mariadb.jdbc</groupId>
   <artifactId>mariadb-java-client</artifactId>
   <scope>runtime</scope>
 </dependency>
 <!-- 持久层框架 -->
 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
 </dependency>
</dependencies>

service 模块 pom.xml 下添加


<dependencies>
 <dependency>
   <groupId>com.seliote</groupId>
   <artifactId>sms-bomber-persistence</artifactId>
 </dependency>
</dependencies>

web 模块 pom.xml 下添加


<dependencies>
 <dependency>
   <groupId>com.seliote</groupId>
   <artifactId>sms-bomber-service</artifactId>
 </dependency>
</dependencies>

start 模块 pom.xml 下添加


<dependencies>
 <dependency>
   <groupId>com.seliote</groupId>
   <artifactId>sms-bomber-web</artifactId>
 </dependency>
</dependencies>

配置 SpringDataJpa

dev yml 下添加


spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://127.0.0.1:3306/sms_bomber
username: sms_bomber
password: 123456!@#$%^qp
jpa:
database-platform: org.hibernate.dialect.MariaDB103Dialect
open-in-view: false
show-sql: true

来源:https://www.cnblogs.com/seliote/p/12234903.html

标签:Spring,Boot,模块,项目,框架,搭建
0
投稿

猜你喜欢

  • IDEA内存调试插件(好用)

    2022-04-19 08:51:13
  • C#延时函数的使用说明

    2023-10-11 19:58:34
  • 在 C# 中使用 Span<T> 和 Memory<T> 编写高性能代码的详细步骤

    2022-06-06 05:06:41
  • Java接口返回省市区树形结构的实现

    2021-10-16 05:07:05
  • web 容器的设计如何实现

    2022-04-07 00:29:51
  • 详解Java实现设计模式之责任链模式

    2023-11-08 10:32:07
  • C#基础之异步调用实例教程

    2021-07-03 08:44:56
  • Android自带emoji表情的使用方法详解

    2021-11-25 09:28:22
  • 详解Spring/Spring boot异步任务编程WebAsyncTask

    2022-12-18 00:40:23
  • Spring Boot 集成PageHelper的使用方法

    2021-10-04 19:16:30
  • C#操作txt文件,进行清空添加操作的小例子

    2023-05-24 14:06:07
  • Java Map接口概述和常用方法详解

    2022-07-29 14:19:06
  • java Map接口子类HashMap遍历与LinkedHashMap详解

    2021-11-18 04:43:38
  • 将JavaDoc注释生成API文档的操作

    2023-06-16 18:24:06
  • Android PopupWindow 点击外面取消实现代码

    2022-02-04 20:52:05
  • 浅谈Java常见的排序算法

    2023-09-08 11:11:11
  • Activiti如何启动流程并使流程前进

    2023-11-18 18:38:51
  • C#单例模式(Singleton Pattern)实例教程

    2022-11-23 10:44:05
  • Maven Plugin的@Mojo和@Execute的具体使用

    2021-12-19 05:23:17
  • 浅谈Java操作符与其优先级

    2022-09-27 19:42:44
  • asp之家 软件编程 m.aspxhome.com