Spring Boot项目搭建

新建SpringBoot项目

SpringBoot 快速创建

1.用http://start.spring.io/网页版的创建

2.在idea中创建SpringBoot项目

  • 打开FileNewProject,选择Spring Initializr

  • 选择WebSpring Web

  • 保持保本一致,prom.xml选择2.4.0

    1
    2
    3
    4
    5
    6
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>

3.SpringBoot 不需要配置容器,是因为使用了嵌入式容器,默认使用tomcat 启动,默认端口为8080。当然,用传统的方式,打包成war包,放入单独的tomcat 也是可以的。

4.SpringBoot 项目使用main函数启动,一般放在XXXApplication类里,需要加@SpringBootApplication注解

5.Maven Wrapper 可以不需要提前下载好Maven,由它去下载Maven。

项目初始配置

1.编码统一配置成UTF-8,包括项目和文件

  • 打开setting设置,搜索encode,把相应的文件统一设置成UTF-8格式。

2.Maven使用阿里云镜像,下载jar包更快。

  • 打开setting设置,搜索maven,配置属于自己的User settings file

settings.xml配置

1
2
3
4
5
6
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3.从创建项目开始,那就应该管理好代码

  • 前后端分离的项目可以删除resources下的statictemplates目录

4.可以使用.gitignore来忽略文件,本地工作空间相关的文件不要提交,比如.ideatarget/*.iml

5.IDEA中显示的文件颜色

  • 红色:还没交给Git管理
  • 绿色:Git已管理,还未提交
  • 蓝色:作为修改,还未提交
  • 灰色:文件删除,还未提交

6.遇到项目运行出错,可使用

  • 关闭项目
  • 删除根目录下的.idea文件夹
  • 重新打开项目

代码关联Git远程仓库

1.即使是个人项目,也建议关联远程仓库,防止电脑出意外

2.远程仓库github很慢,建议国内的

3.可以使用Gitlab搭建自己的远程仓库

4.相关git命令:push、pull、git clone、git remote

5.两种方式:SSH(推荐)、用户密码

IDE的VCS配置Git

1.选择Git

2.来到Commit选择改动或者暂还没有提交的。

3.提交到VCS,下面可以输入提交信息,点击Commit

4.安装Git,配置SSH密钥,点击HELP,点击SHOW SSH KEY,获得密钥信息

5.登录gitee,把SSH的密钥复制进去

6.在gitee创建仓库,然后通过命令行推送

1
2
git remote add origin git@gitee.com:yujiewong/wiki.git
git push -u origin master

启动日志优化

1.如果是mac电脑,把logback配置的文件路径改为\

logback-spring.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?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>

2.logback 5个日志级别
TRACE < DEBUG < INFO < WARN < ERROR

3.不需要交给Git来管理的,在.gitignore里修改

4.自定义图案,增加banner.txt

5.在线生成文字图案:http://patorjk.com/software/taag/

开发Hello World接口

1.config层用于放配置类

2.@ComponentScan:配置要交给Spring管理的类路径

  • SpringBootApplication注解包含了@ComponentScan注解,如果启动类和其他类所在的包没有包含关系的话,需要加@ComponentScan注解
  • 注意:扫描的路径不要太通用,比如扫描:”com.javami.”而不是”com”(这样会把第三方的jar里的类也扫描出来)

3.controller层用于定义接口,是请求的入口

4.@RestController注解用于声明返回文本数据,一般返回JSON

  • @Controller注解用于声明返回界面
  • @RestController = @Controller + ResponseBody

5.常见的HTTP请求:GET POST PUT DELETE
对应的注解:

  • GetMapping
  • PostMapping
  • PutMapping
  • DeleteMapping
1
2
3
@GetMapping("/hello")
//等价于
@RequestMapping(value="/hello",method="RequestMethod.GET")

使用HTTP Client测试接口

  • IDEA会自动识别xxx.http文件
  • 自带的Live Template
  • 可以写脚本验证返回值,类似单元测试

SpringBoot配置文件(自定义配置项)

1.SpringBoot会自动识别下面这组配置文件

  • application.properties/yml
  • config/application.properties/yml
  • 如果是SpringCloud,还会自动识别下面这组配置文件:
    • bootstrap.properties/yml
    • config/bootstrap.properties/yml

2.用@Value来读自定义配置项

1
2
@Value("${test.hello:TEST}")
private String testHello;`

3.@Value带默认值写法

4.properties和yml文件互转:https://www.toyaml.com/index.html

集成热部署

1.SpringBoot内置的依赖不需要加版本号

2.引入依赖包

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>

3.开启静态自动编译

4.开启动态自动编译

  • 同时按住Ctrl+Shirt+Alt+/
  • 选择:Registry
  • 勾选:compiler.automake.allow.when.app.running