2.SpringBoot多模块项目搭建

一、创建Maven父工程

1.首先使用Maven快速创建一个工程。

2.然后删除无关的文件(src),只需保留pom.xml 文件。

3.从目录中可以看到过滤掉了.idea文件 .iml .mvn文件(可以理解为隐藏了起来),可以通过setting->Editor->File Types中的Ignore files and folders中补充.idea;*.iml;.mvn;实现。

二、创建第一个Spring Boot子模块lql-web,作为统一入口

1.在根项目上点击右键,选择Module

2.选择Spring Initializr

3.填写信息

注:Java Version -> 8

注:模块的Group保持与父工程的GroupId一致,这里是 lql

注:模块的Artifact为GroupId-xxx,这里是 lql-web

注:模块的Package为GroupId.xxx,这里是 lql.web

4.选择依赖项

5.完成向导,lql-web是新建的模块

三、创建第二个Spring Boot子模块lql-entity

1.在根项目上点击右键,选择Module

2.选择Spring Initializr

3.填写信息

注:Java Version -> 8

注:模块的Group保持与父工程的GroupId一致,这里是 lql

注:模块的Artifact为GroupId-xxx,这里是 lql-entity

注:模块的Package为GroupId.xxx,这里是 lql.entity

4.Web不选择依赖

5.完成向导,lql-entity是新建的模块

四、参照第二个子模块,创建lql-mapper、lql-service

框起来的文件嫌碍眼的话可以删掉img

保留lql-web的启动类(*Application.java),其他模块的启动类都删除掉

保留lql-web的src下的test文件夹,其他模块的test文件夹都删除掉

五、修改pom.xml文件

1.修改父工程pom.xml(最外层)

<?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">
<!-- 基本信息 -->
<description>SpringBoot 多模块Demo</description>
<modelVersion>4.0.0</modelVersion>
<name>spring-boot-interface</name>
<packaging>pom</packaging>

<!-- 项目说明:这里作为聚合工程的父工程 -->
<groupId>lql</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>

<!-- 继承说明:这里继承SpringBoot提供的父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.2</version>
    <relativePath/>
</parent>

<!-- 重要:模块说明:这里声明多个子模块 -->
<modules>
    <module>lql-web</module>
    <module>lql-service</module>
    <module>lql-mapper</module>
    <module>lql-entity</module>
</modules>

<!--子模块继承后,提供作用:锁定版本+子module不用version-->
<dependencyManagement>
    <dependencies>
        <!--重要:引入子模块依赖-->
        <dependency>
            <groupId>lql</groupId>
            <artifactId>lql-web</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>lql</groupId>
            <artifactId>lql-service</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>lql</groupId>
            <artifactId>lql-mapper</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>lql</groupId>
            <artifactId>lql-entity</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>


        <!--springboot 2.4.2-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.4.2</version>
        </dependency>

        <!-- 引入log4j2依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>2.4.2</version>
        </dependency>

        <!-- 引入mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

        <!-- 引入mybatis-plus依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.0</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.51</version>
        </dependency>

        <!--添加lomback-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>

        <!--SQLServer-->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>4.0</version>
        </dependency>

        <!--mysql-connector-java
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        -->
    </dependencies>
</dependencyManagement>

</project>

2.修改lql-web pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<!-- 基本信息 -->
<groupId>lql</groupId>
<artifactId>lql-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>lql-web</name>

<!-- 继承本项目的父工程 -->
<parent>
	<groupId>lql</groupId>
	<artifactId>demo</artifactId>
	<version>1.0-SNAPSHOT</version>
</parent>

<!-- Web模块相关依赖 -->
<dependencies>
	<dependency>
		<groupId>lql</groupId>
		<artifactId>lql-service</artifactId>
	</dependency>
	<dependency>
		<groupId>lql</groupId>
		<artifactId>lql-entity</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
		<exclusions>
			<!--排除logging-->
			<exclusion>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-logging</artifactId>
			</exclusion>
		</exclusions>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>

	<!--SQLServer-->
	<dependency>
		<groupId>com.microsoft.sqlserver</groupId>
		<artifactId>sqljdbc4</artifactId>
	</dependency>

	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid-spring-boot-starter</artifactId>
	</dependency>

	<!-- 引入log4j2依赖 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-log4j2</artifactId>
	</dependency>
</dependencies>

<!--多模块打包:只需在启动类所在模块的POM文件:指定打包插件 -->
<!-- 保证模块名称的开头一致 lql-xxx -->
<build>
	<!--打包名称-->
	<finalName>lql-demo</finalName>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.4.2</version>
		</plugin>

		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-resources-plugin</artifactId>
			<version>2.4.2</version>
		</plugin>
	</plugins>
</build>
</project>

3.修改lql-service pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<!-- 基本信息 -->
	<groupId>lql</groupId>
	<artifactId>lql-service</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>lql-service</name>

	<!-- 继承本项目的父工程 -->
	<parent>
		<groupId>lql</groupId>
		<artifactId>demo</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>

	<!-- Web模块相关依赖 -->
	<dependencies>
		<dependency>
			<groupId>lql</groupId>
			<artifactId>lql-mapper</artifactId>
		</dependency>
		<dependency>
			<groupId>lql</groupId>
			<artifactId>lql-entity</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<!--排除logging-->
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
</project>

4.修改lql-mapper pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<!-- 基本信息 -->
	<groupId>lql</groupId>
	<artifactId>lql-mapper</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>lql-mapper</name>

	<!-- 继承本项目的父工程 -->
	<parent>
		<groupId>lql</groupId>
		<artifactId>demo</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>

	<!-- Web模块相关依赖 -->
	<dependencies>
		<dependency>
			<groupId>lql</groupId>
			<artifactId>lql-entity</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<!--排除logging-->
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
</project>

5.修改lql-entity pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<!-- 基本信息 -->
	<groupId>lql</groupId>
	<artifactId>lql-entity</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>lql-entity</name>

	<!-- 继承本项目的父工程 -->
	<parent>
		<groupId>lql</groupId>
		<artifactId>demo</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>

	<!-- Web模块相关依赖 -->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<!--排除logging-->
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
		</dependency>
	</dependencies>
</project>

六、application.yml配置

注:若IDEA无法识别yml文件
1).看看是不是将yml后缀文件名加到Text文件中去了

2)看看YAML文件中是否有*.yml后缀

server:
  port: 8989
spring:
  datasource:
    #master:
      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
      url: jdbc:sqlserver://192.168.110.31:1433;DatabaseName=Demo
      username: sa
      password: Qlled.123456
      type: com.zaxxer.hikari.HikariDataSource

logging:
  config: classpath:log4j2.xml

七、设置首页、启动项目

首页文件需要放到static目录下,具体项目结构如下图所示:

index.html 代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MultiModuleDemo</title>
</head>
<body>
<h1>Hello</h1>
</body>
</html>

添加配置类,其代码如下:

package lql.web.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class IndexViewConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/index.html");
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    }
}

此时通过IP+端口号,就可以访问默认首页了。

我们启动项目可以看到

如何修改上面展示的banner

1.打开网址 http://patorjk.com/software/taag/#p=display&h=3&v=3#f=4Max&t=qf Sping Boor

2.copy生成的字符串到一个txt文件中,将其命名为banner.txt,将这个文件拷贝到resoures目录中

可能需要重启Idea

八、业务类(SQLServer)

1.SQLServer数据库表格的搭建

CREATE TABLE [dbo].[User](
	[UserId] [varchar](50) primary key NOT NULL,
	[UserName] [varchar](50) NULL,
	[PassWord] [varchar](50) NULL
) 

2.数据库表格对应的实体类User(lql-entity)

package lql.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * Created by QiuLiang.Liu
 * on 2021-02-03 16:02
 */
@Data
@TableName("T_User")
public class User {
    /**
     * 用户ID
     */
    @TableField("UserId")
    @JsonProperty("UserId")
    private String userId;

    /**
     * 用户名称
     */
    @TableField("UserName")
    @JsonProperty("UserName")
    private String userName;

    /**
     * 密码
     */
    @TableField("PassWord")
    @JsonProperty("PassWord")
    private String passWord;
}

3.数据交互层的搭建UserMapper(lql-mapper)

package lql.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import lql.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Created by QiuLiang.Liu
 * on 2021-02-03 16:17
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    @Select("select * from T_User")
    List<User> getAll();

    @Select("select * from T_User where UserId = #{UserId}")
    User getById(@Param("UserId") String userId);
}

4.业务逻辑层的搭建UserService(lql-service)

package lql.service;

import lql.entity.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Created by QiuLiang.Liu
 * on 2021-02-03 16:49
 */
public interface UserService {

    List<User> getAll();

    User getById(String userId);
}
package lql.service.Impl;

import lql.entity.User;
import lql.mapper.UserMapper;
import lql.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * Created by QiuLiang.Liu
 * on 2021-02-03 17:00
 */
@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    @Override
    public List<User> getAll() {
        return userMapper.getAll();
    }

    @Override
    public User getById(String userId)  {
        return userMapper.getById(userId);
    }
}

5.表现层的搭建UserController(lql-web)

package lql.web.controller;

import lql.entity.common.Result;
import lql.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by QiuLiang.Liu
 * on 2021-02-03 17:30
 */
@RestController
@RequestMapping("/User")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("getAll")
    public Result getAll() {
        try {
            return Result.isOk().data(userService.getAll());
        } catch (Exception e) {
            return Result.isFail(e);
        }
    }

    @GetMapping("getById")
    public Result getById(String userId) {
        try {
            return Result.isOk().data(userService.getById(userId));
        } catch (Exception e) {
            return Result.isFail(e);
        }
    }
}

九、修改启动类LqlWebApplication(lql-web)

package lql.web;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
//扫描"lql"包下的所有类  @ComponentScan(basePackages = {"xxx","xxx.xxx"})
@ComponentScan(basePackages = {"lql"})
//指定要扫描的Mapper类的包的路径 @MapperScan(basePackages = {"xxx","xxx.xxx"})
@MapperScan(basePackages = {"lql.mapper"})
public class LqlWebApplication {

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

}

十、测试

十一、引入log4j2 生成日志文件

<!-- 引入log4j2依赖 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-log4j2</artifactId>
	</dependency>

添加log4j2.xml,放在lql-web模块的resources目录下

<?xml version="1.0" encoding="UTF-8"?>
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出 -->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数 -->
<configuration monitorInterval="5">
    <!--共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
            All:最低等级的,用于打开所有日志记录.
            Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.
            Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.
            Info:消息在粗粒度级别上突出强调应用程序的运行过程.
            Warn:输出警告及warn以下级别的日志.
            Error:输出错误信息日志.
            Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.
            OFF:最高等级的,用于关闭所有日志记录-->

    <!--变量配置 -->
    <Properties>
        <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符 -->
        <!-- %logger{36} 表示 Logger 名字最长36个字符 -->
        <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %F:%L - %m%n" />
        <!-- 定义日志存储的路径,不要配置相对路径 -->
        <property name="FILE_PATH" value="./logs" />
        <!-- 这里我一般填项目名 -->
        <property name="FILE_NAME" value="Demo" />
    </Properties>

    <appenders>

        <console name="Console" target="SYSTEM_OUT">
            <!--输出日志的格式 -->
            <PatternLayout pattern="${LOG_PATTERN}" />
            <!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY" />
        </console>

        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
        <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
            <PatternLayout pattern="${LOG_PATTERN}" />
        </File>


        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
        <!-- 日志访问文件配置,filePattern表示压缩日志文件的文件名的模式,.gz会自动压缩 -->
        <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/Demo.log" filePattern="${FILE_PATH}/${FILE_NAME}-%d{yyyy-MM-dd}_%i.log.gz">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="${LOG_PATTERN}" />
            <Policies>
                <!--interval属性用来指定多久滚动一次,默认是1 hour -->
                <TimeBasedTriggeringPolicy interval="1" />
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <!-- 默认的文件大小处理策略,max表示filePattern配置的%i的最大值,即表示当天文件归档的最大数量 -->
            <DefaultRolloverStrategy max="30" >
                <!-- 删除处理策略,在配置的basePath路径中搜索,maxDepth表示往下搜索的最大深度 -->
                <Delete basePath="${FILE_PATH}/" maxDepth="2">
                    <!-- 文件名搜索匹配,支持正则 -->
                    <IfFileName glob="*.log.gz" />
                    <!-- 最新修改时间超过1d则会被删除 -->
                    <IfLastModified age="1d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

        <!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档
        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="${LOG_PATTERN}" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="5" />
        </RollingFile>
        -->

        <!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档
        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="${LOG_PATTERN}" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="5" />
        </RollingFile>
        -->
    </appenders>

    <!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。 -->
    <!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>

        <!--过滤掉spring和mybatis的一些无用的DEBUG信息 -->
        <logger name="org.mybatis" level="info" additivity="false">
            <AppenderRef ref="Console" />
        </logger>
        <!--过滤掉MappedStatement的创建流程的DEBUG信息 CTRL+N找到类所在的路径-->
        <logger name="com.baomidou.mybatisplus.core" level="info" additivity="false">
            <AppenderRef ref="Console" />
        </logger>
        <!--监控系统信息 -->
        <!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。 -->
        <Logger name="org.springframework" level="info" additivity="false">
            <AppenderRef ref="Console" />
        </Logger>

        <!--打印等级 -->
        <root level="debug">
            <appender-ref ref="Console" />
            <appender-ref ref="Filelog" />
            <appender-ref ref="RollingFileInfo" />
            <!--<appender-ref ref="RollingFileWarn" />-->
            <!--<appender-ref ref="RollingFileError" />-->
        </root>
    </loggers>
</configuration>

十二、运维部署(多模块打包)

1.在lql-web的pom.xml文件添加打包插件

<!--多模块打包:只需在启动类所在模块的POM文件:指定打包插件 -->
<!-- 保证模块名称的开头一致 lql-xxx -->
<build>
	<!--打包名称-->
	<finalName>lql-demo</finalName>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.4.2</version>
		</plugin>

		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-resources-plugin</artifactId>
			<version>2.4.2</version>
		</plugin>
	</plugins>
</build>

2.在IDE打开Maven插件,然后在模块lql-web Lifecycle中点击package

如果打包时提示无法Dependency其他模块,则需要在父工程的Lifecycle中依次点击clean、(test?)、install

最后 代码见 2.SpringBoot多模块项目搭建.zip

posted @ 2021-03-22 09:44  仰望Orz  阅读(152)  评论(0)    收藏  举报