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类型的父子模块)
分类:
springcloud
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-09-26 029 ElasticSearch----全文检索技术04---基础知识详解02-查询
2019-09-26 028 ElasticSearch----全文检索技术03---基础知识详解01-IK分词器和映射
2019-09-26 027 ElasticSearch----全文检索技术02---快速入门
2019-09-26 04 Win10 系统直接在目录下打开cmd