Springcloud学习笔记19--springboot新建工程过程记录(springboot创建工程示例)----经典

1.flep-test工程创建

(1)选择创建工程project

(2)不要选择骨架

 

(3)填写工程坐标,我们的工程名称为flep-sdk-test2

 

(4)选择安装目录

 

 点击finish,完成工程创建

(5)最原始的项目结构

 2.pom文件中配置maven依赖

<?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>com.ttbank.flep</groupId>
    <artifactId>flep-sdk-test2</artifactId>
    <version>1.0-SNAPSHOT</version>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <dependencies>
        <!--Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.6.RELEASE</version>
            <!--排除掉logging,不使用logback,改用log4j2-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

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

        <!--log4j2依赖disruptor-->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.4.2</version>
        </dependency>



        <!--nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>

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

        <!-- mybatisPlus 核心库 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

        <!-- 添加 代码生成器 依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>

        <!--模板引擎(mybatis-plus自动生成代码需要模板)-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.24</version>
        </dependency>

        <!--druid-spring-boot-starter只是在druid基础上进行了一次封装,专门用来整合spring-boot项目-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.24</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.11</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.2</version>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.6.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <mainClass>com.ttbank.flep.core.FileFlepApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3.编写配置文件application.yml

最常用的基础配置:

#application.yml为基本配置文件
server:
port: 9001

mybatis-plus:
# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
mapper-locations: classpath*:mapper/**/*Mapper.xml
# 以下配置均有默认值,可以不设置
global-config:
db-config:
logic-not-delete-value: 1
logic-delete-value: 0
configuration:
# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
map-underscore-to-camel-case: true
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
auto-mapping-behavior: full
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/day1?serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: 000000
driver-class-name: com.mysql.cj.jdbc.Driver
#druid连接池配置
druid:
#初始化连接大小
initial-size: 5
#最大连接池数量
max-active: 20
#最小连接池数量
min-idle: 3
#配置获取连接等待超时时间,单位毫秒
max-wait: 60000
#配置间隔多久才进行一次检查看,检查需要关闭的空闲连接,单位毫秒
time-between-eviction-runs-millis: 60000
#配置一个连接在池中最小的生存时间,单位毫秒
min-evictable-idle-time-millis: 300000
validation-query: select 'x'
#建议配置为true,不影响性能,并且保证安全性,申请连接的时候检测
test-while-idle: true
#获取连接时执行检测,建议关闭,影响性能
test-on-borrow: false
#归还连接时执行检测,建议关闭,影响性能
test-on-return: false
#检测连接是否有效的超时时间
validation-query-timeout: 10

logging:
config: classpath:log4j2-dev.xml

4.接入log4j2

log4j2-dev.xml模板如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" monitorInterval="600">
    <Properties>
        <property name="LOG_HOME" value="${sys:user.home}/logs"/>
        <property name="APP_CODE" value="file_log"/>
        <property name="LOG_LEVEL_PATTERN" value="%-5p"/>
        <property name="INSTANCE_INFO_PATTERN" value="${homeName}:${sys:user.name}"/>
        <property name="CODE_INFO_PATTERN" value="%pid:%F:%L"/>
        <property name="LOG_DATEFORMAT_PATTERN" value="yyyy-MM-dd HH:mm:ss.SSS"/>
        <property name="METRIC_LOG_DATEFORMAT_PATTERN" value="yyyy-MM-dd HH:mm:ss.SSS"/>
        <property name="APP_LOG_PATTERN" value="%d{${LOG_DATEFORMAT_PATTERN}}  | ${LOG_LEVEL_PATTERN} | %X{TRACE_ID} | %t | ${CODE_INFO_PATTERN} | [%X{seq}] -%m%n"/>
        <property name="METRIC_LOG_PATTERN" value="%d{${METRIC_LOG_DATEFORMAT_PATTERN}}%m%n"/>
        <property name="LOG_PATTERN" value="%d{${LOG_DATEFORMAT_PATTERN}} | %X{TRACE_ID}  | ${LOG_LEVEL_PATTERN} | ${INSTANCE_INFO_PATTERN} | ${CODE_INFO_PATTERN} | [%X{seq}] -%m%n"/>
        <property name="ALERT_LOG_PATTERN" value="%d{${LOG_DATEFORMAT_PATTERN}}  $${ctx:traceId:-}  | ${INSTANCE_INFO_PATTERN} |  [%X{seq}] -%m%n"/>
    </Properties>
    <!--先定义所有的appender-->
    <appenders>
        <!--这个输出控制台的配置-->
        <console name="Console" target="SYSTEM_OUT" follow="true">
            <!--输出日志的格式,-->
            <PatternLayout pattern="%d{${LOG_DATEFORMAT_PATTERN}} |  ${LOG_LEVEL_PATTERN} | %t | %c:%L | [%X{seq}] -%m%n"/>
        </console>

        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingFile name="EventLogFile" fileName="${LOG_HOME}/event.log" immediateFlush="true"
                     filePattern="${LOG_HOME}/%d{yyyyMMdd}/event.log.%i">
            <PatternLayout>
                <Pattern>${LOG_PATTERN}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy internal="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="50 MB"/>
            </Policies>
            <!--保留最近30天的日志-->
            <DefaultRolloverStrategy>
                <Delete basePath="${LOG_HOME}" maxDepth="2">
                    <IfFileName glob="*/app.log.*"/>
                    <IfLastModified age="30d"/>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

        <RollingFile name="AppLogFile" fileName="${LOG_HOME}/app.log" immediateFlush="true"
                     filePattern="${LOG_HOME}/%d{yyyyMMdd}/app.log.%i">
            <PatternLayout>
                <Pattern>${APP_LOG_PATTERN}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy internal="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="50 MB"/>
            </Policies>
            <!--保留最近30天的日志-->
            <DefaultRolloverStrategy>
                <Delete basePath="${LOG_HOME}" maxDepth="2">
                    <IfFileName glob="*/app.log.*"/>
                    <IfLastModified age="30d"/>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

        <RollingFile name="AlertLogFile" fileName="${LOG_HOME}/alert.log" immediateFlush="true"
                     filePattern="${LOG_HOME}/%d{yyyyMMdd}/alert.log.%i">
            <PatternLayout>
                <Pattern>${ALERT_LOG_PATTERN}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy internal="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="50 MB"/>
            </Policies>
        </RollingFile>

        <RollingFile name="ErrorLogFile" fileName="${LOG_HOME}/error.log" immediateFlush="true"
                     filePattern="${LOG_HOME}/%d{yyyyMMdd}/error.log.%i">
            <PatternLayout>
                <Pattern>${LOG_PATTERN}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy internal="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="50 MB"/>
            </Policies>

        </RollingFile>


        <RollingFile name="FlepMetricLogFile" fileName="${LOG_HOME}/metric.log" immediateFlush="true"
                     filePattern="${LOG_HOME}/%d{yyyyMMdd}/metric.log.%i">
            <PatternLayout>
                <Pattern>${METRIC_LOG_PATTERN}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy internal="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="50 MB"/>
            </Policies>
        </RollingFile>

    </appenders>
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
        <Root level="INFO">
            <AppenderRef ref="Console" />
            <AppenderRef ref="AppLogFile" />
            <AppenderRef ref="AlertLogFile"/>
            <AppenderRef ref="ErrorLogFile"/>
        </Root>
        <AsyncLogger name="event" level="ALL" additivity="false">
            <AppenderRef ref="EventLogFile"/>
        </AsyncLogger>


        <logger name="org.apache" level="warn"/>
        <logger name="org.springframework" level="warn"/>
        <logger name="com.netflix" level="warn"/>
        <logger name="springfox" level="warn"/>

    </loggers>
</configuration>

5.编写启动类

package com.ttbank.flep.sdk;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * @Author lucky
 * @Date 2021/12/14 18:13
 */
@SpringBootApplication(scanBasePackages="com.ttbank")
@EnableDiscoveryClient
@EnableScheduling
@MapperScan("com.ttbank.flep.sdk.mapper")
public class FlepSdkTest2Application {
    public static void main(String[] args) {
        SpringApplication.run(FlepSdkTest2Application.class,args);
    }

}

 

参考文献:

https://www.cnblogs.com/luckyplj/p/11625105.html(非常典型-创建maven类型的父子模块)

posted @ 2021-09-26 15:11  雨后观山色  阅读(181)  评论(0编辑  收藏  举报