Spring Boot 学习记录笔记【 一 】
创建 Spring Boot 项目
我使用开发软件IntelliJ IDEA 2021.3.2,已经百度破解了。
相信大家都使用过IntelliJ IDEA了,接下来我们就直接创建一个项目。
填写创建项目的名称和存放地址,以及包名和JDK。
初始化我们就选择一个版本号,和Spring Web依赖,其余项目中需要用到的依赖,在使用过程中,我们可以依次添加。
创建成功,项目基本目录展示。
修改 Spring Boot 项目
可能每个人的习惯不一样,主要也是记录自己的学习笔记,体谅一下。
删除
删除 test 测试文件夹下面所有文件以及pom.xml里面的test依赖。
新增
针对 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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.12</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zcf</groupId>
<artifactId>monitor-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>monitor-demo</name>
<description>monitor-demo</description>
<properties>
<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>
</dependency>
<!-- 集成mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- mysql 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<!-- druid 连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- spring AOP -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- alibaba fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
<!-- pagehelper 插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.0</version>
</dependency>
<!-- 校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 整合redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- WebSocket -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!-- easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
</dependencies>
<build>
<!-- 打Jar包路径和名称 -->
<finalName>/dist/${artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<configurationFile>src/main/resources/generator/generator-config.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
在src -> resources 下创建文件夹generator ,新建 generator-config.xml ,mybatis generator 自动生成持久层代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
<!-- 自动检查关键字,为关键字增加反引号 -->
<property name="autoDelimitKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!--覆盖生成XML文件-->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<!-- 生成的实体类添加toString()方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!-- 不生成注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/monitordemo?serverTimezone=Asia/Shanghai"
userId="ahls"
password="AHls888@.">
</jdbcConnection>
<!-- domain类的位置 -->
<javaModelGenerator targetProject="src\main\java"
targetPackage="com.zcf.monitor.entity"/>
<!-- mapper xml的位置 -->
<sqlMapGenerator targetProject="src\main\resources"
targetPackage="mapper"/>
<!-- mapper类的位置 -->
<javaClientGenerator targetProject="src\main\java"
targetPackage="com.zcf.monitor.mapper"
type="XMLMAPPER"/>
<!-- 修改生成数据库的表名 -->
<!-- <table tableName="demo" domainObjectName="Demo"/>-->
<!-- <table tableName="ebook" domainObjectName="Ebook"/>-->
<!-- <table tableName="category" domainObjectName="Category"/>-->
<!-- <table tableName="doc" domainObjectName="Doc"/>-->
<!-- <table tableName="content" domainObjectName="Content"/>-->
<!-- <table tableName="user"/>-->
<table tableName="ebook_snapshot" domainObjectName="EbookSnapshot"/>
<!-- <table tableName="phone" domainObjectName="Phone"/>-->
<!-- <table tableName="segment" domainObjectName="Segment"/>-->
<!-- <table tableName="new_phone" domainObjectName="NewPhone"/>-->
<!-- <table tableName="invitation" />-->
</context>
</generatorConfiguration>
在src -> resources 新建 logback-spring.xml ,
logback 5个日志级别
TRACE < DEBUG < INFO < WARN < ERROR
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 修改一下路径-->
<property name="PATH" value="./log"></property>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>
<!-- <Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>-->
</encoder>
</appender>
<appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/trace.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<root level="ERROR">
<appender-ref ref="ERROR_FILE" />
</root>
<root level="TRACE">
<appender-ref ref="TRACE_FILE" />
</root>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
修改
修改application.properties文件 -> 修改成 application.yml ,修改application,并不代表必须要修改,还是根据个人习惯不同。
server: #修改启动端口号,默认8080
port: 8089
spring:
datasource: #增加数据库链接
url: jdbc:mysql://127.0.0.1:3306/demozcf?characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: ahls
password: AHls888@.
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
redis: #增加Redis链接
host: 127.0.0.1
database: 0
port: 6379
password:
jedis:
pool:
max-active: 200
max-wait: -1
max-idle: 10
min-idle: 0
timeout: 6000
mybatis: #配置mybatis所有Mapper.xml所在的路径
mapper-locations: classpath:/mapper/**/*.xml
logging: #SQL日志打印
level:
com.zcf.monitor.mapper: trace
在src -> main -> java -> com.zcf.monitor 下,新建文件夹config,将启动类移动到config文件夹里面,并修改,这一步移动也是因为个人习惯去操作的。
package com.zcf.monitor.config;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.env.Environment;
@ComponentScan("com.zcf")
@SpringBootApplication
@MapperScan("com.zcf.monitor.mapper")
public class MonitorDemoApplication {
private static final Logger LOG = LoggerFactory.getLogger(MonitorDemoApplication.class);
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MonitorDemoApplication.class);
Environment env = app.run(args).getEnvironment();
LOG.info("启动成功!!");
LOG.info("地址:\thttp://127.0.0.1:{}",env.getProperty("server.port"));
}
}
启动
个人觉得基本的搭建已经完成,我们开始启动一下,看看效果。启动的方法又很多种,使用过IDEA,都应该知道如何启动,不赘述了。看看效果
从图中,看出来现在已经启动成功了。因为Spring Boot 内置的有 tomcat 容器,就不用单独部署到tomcat 里面了。
现在我们在浏览器上访问一下:http://127.0.0.1:8089/test,之前写过的一个测试接口
package com.zcf.monitor.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 测试专用
*/
@RestController
public class TestController {
private static final Logger LOG = LoggerFactory.getLogger(TestController.class);
@GetMapping("/test")
public String toTest(){
LOG.info("测试成功。");
return "success!!!";
}
}
Console也打印LOG日志
结尾
到这里,Spring Boot 项目从创建到基础启动,已经全部完成了,文章是记录自己的学习笔记,或多或少都有问题和遗漏,欢迎留言,一起进步。继续更新Spring Boot 学习记录笔记【 二 】