springboot 项目实战-02章

1.本章介绍(略)

2.如何快速生成Springboot项目(略)

3.本地代码关联远程仓库的git操作

git init->git add . -> git commit -m "备注信息" ->git remote add origin 你的远程仓库地址 -> git push -u origin master

4.springboot 项目新的认知

springboot项目是父子项目,体现在maven上

springboot项目是嵌入式容器,自动使用tomcat启动项目的

5.启动日志优化

5.1 logback 日志样式

springboot 2.2 版本以上的,直接新增一个文件logback-spring.xml 到resource文件夹下,只要是这个名儿,springboot就可以自动识别它。

文件的内容:

springboot 项目实战-02章
<?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{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>
View Code

 解读文件:

<Pattern>
输出格式上,%d 表示时间,%highlight 表示高亮,%-5level 表示从左往右,显示5个字符,%blue

%d{ss.SSS}:日期格式,表示秒:毫秒 ,同样的,HH:mm:ss.SSS 则表示小时:分钟:秒:毫秒 ,不想要哪个时间单位,就去掉哪个就好。
%highlight(%-5level) :打印日志级别
%blue(%-30logger{30}:%-4line)
%thread:线程
%green(%-18X{LOG_ID})
%msg:日志信息
%n:换行</Pattern>

5.2 增加启动成功的日志

LOG.info("start success!");
LOG.info("地址: \thttp://127.0.0.1:{}",env.getProperty("server.port"));
用env.getProperty("属性名")获取application.properties里的配置属性即可。

5.3 启动图案修改

 在resource下面新增一个名叫banner.txt的文件,在这里http://patorjk.com/software/taag/#p=display&h=2&v=1&f=Flower%20Power&t=XXXQ,在右边的框框里输入文字或者英文,选一个喜欢的图案样式,copy到banner.txt里面。再次启动Springboot服务,就可以看到新的启动图案了

6.开发helloworld的http接口

6.1 开发helloworld接口(略)

6.2 项目分层

接口:一般要放在controller层

注解:

@requestMapping("/test") ,路由

@restController 返回字符串类型。

@Controller 返回页面(前后端不分离的话,用这个注解,前后端分离的话,就基本是用不着了),本次实战用不着这个注解。

启动类里有个类注解@ComponentScan("com.xxx.wiki") 这个注解的作用是增加springboot 项目的扫描返回,比如我们知道,启动类在哪里,默认就扫描启动类的子目录下的内容,但是启动类如果不在默认位置,或者在默认位置,但是 还是希望扫描一些额外的不在启动类里面的子项目,我们就可以用注解@ComponentScan("com.xxx.wiki","com.xxx.wiki")来扩大扫描范围

7.idea自带 http client 测试接口

7.1 好处:减掉窗口切换导致的效率低下;解决浏览器不能访问post请求的问题

7.2 怎么用?

(1)在项目文件下新建一个.http 后缀的文件,文件名随意取,文件后缀一定要是.http 的,比如test.http

(2)在test.http文件夹里面 输入 gtr,生成一个不带入参的GET类型的http请求。

GET http://localhost:80/api/item
Accept: application/json

###

这个快捷键在idea的这里:idea-属性-live_templates 找到httprequest 打开 就可以看到idea已经准备好的 默认的请求模版,注意,如果test.http 文件中 要写多个http请求,那么要保留“###”,将多个请求隔离开来。当然 我们也可以自定义自己的模版,但是我目前不会

生成的http请求是个模版,改成适合自己项目的请求即可,然后发起请求(test.http文件,对每个请求的旁边有一个绿色三角启动键,启动就可以发起请求),发起的所有请求打的日志都在项目根目录下可以找到,比如找.idea/httpRequests里面,多个log文件,每一个文件代表了一次请求的日志。

8.Springboot 配置

 8.1 默认配置文件

1.可自动识别 resource/application.properties的文件(这个是默认的),可以自动识别resource/config /application.properties(这个是自建的),这两个文件都有的时候,内层文件生效。

也可以自动识别 resource/application.yml,也可以自动识别resource/config /application.yml。

2.可自动识别bootstrap.properties,一般用于动态配置,线上可以实施修改实时生效,一般可配合nacos使用。

3.yaml和.properties 的转换:https://toyaml.com/index.html。

4.对1和2的总结:

springboot会自动识别下面这组文件,

application.properties/yml 文件 和 config/application.properties/yml 

springcloud会自动识别下面这组文件,

bootstrap.properties/yml文件和config/bootstrap.properties/yml 

8.2 自定义配置项

我们在application.properties里重新定义server.port=8088 ,覆盖掉了默认值8080

我们还可以在application.properties再配置一个:test.config=test

然后,在controller里这样使用:

    @Value("${test.config}")// @value 注解,${}包裹配置name,
    private String testConfig;//定义一下这个变量,value给这个变量用,具体看@value注解怎么用
@GetMapping("/test/config")//写一个接口,把读出来的配置value返回
    public String test(){
        return "test"+":"+testConfig;
    }

写一个test.http 请求(gtr),测试一下

GET http://localhost:8088/test/config
Accept: application/json

###

测一下,结果为:

GET http://localhost:8088/test/config

HTTP/1.1 200 
Content-Type: application/json
Content-Length: 9
Date: Wed, 19 Jan 2022 05:09:43 GMT
Keep-Alive: timeout=60
Connection: keep-alive

test:test

Response code: 200; Time: 105ms; Content length: 9 bytes

OK!测试通过

另外,默认配置这样写@Value("${test.config:defualt value}"),如果在配置文件中读不到配置value,就在这里读默认值。

9.热部署(略)

 
上一篇:使用DNS基准工具优化域名服务器性能


下一篇:2022-02-05 数论