目录

  • 一、配置文件
    • 1.1、格式
    • 1.2、存放位置及加载顺序
    • 1.3、占位符${}
    • 1.4、bootstrap 配置文件
  • 二、常见注解
    • 2.1、核心注解
      • 2.1.1、@SpringBootApplication
      • 2.1.2、@SpringBootConfiguration
      • 2.1.3、@Configuration
      • 2.1.4、@EnableAutoConfiguration
      • 2.1.5、@AutoConfigurationPackage
      • 2.1.6、@Import({AutoConfigurationImportSelector.class})
      • 2.1.7、@ComponentScan
      • 2.1.8、@ConfigurationPropertiesScan
    • 2.2、控制层注解
      • 2.2.1、@Controller
      • 2.2.2、@RestController
      • 2.2.3、@GetMapping
      • 2.2.4、@PostMapping
      • 2.2.5、@PutMapping
      • 2.2.6、@DeleteMapping
  • 三、监控检测
    • 3.1、引入pom依赖
    • 3.2、访问监控服务
    • 3.4、配置文件修改
    • 3.3、常用监控指标接口
  • 四、Admin使用(SBA)
    • 4.1、简介
    • 4.2、服务端搭建
    • 4.3、客户端搭建
  • 五、Logback日志
    • 5.1、简介
    • 5.2、Logback 读取配置文件方式
    • 5.3、添加logback.xml
    • 5.4、使用
    • 5.5、屏蔽指定包中的日志输出
  • 六、打包方式
    • 6.1、引入pom依赖
    • 6.2、打包操作(idea)
    • 6.3、运行
  • 七、多环境配置
  • 八、linux下脚本启动

一、配置文件

1.1、格式

1)支持两种全局配置文件,application.properteis和application.yml(application.yaml);
2)yaml文件格式要求:大小写敏感、使用缩进代表层级关系、相同的部分只出现一次;

1.2、存放位置及加载顺序

1)当前项目根目录下的一个/config 子目录中(第一);
2)当前项目根目录中(第二);
3)项目的 resources 即 classpath 根路径下的/config 目录中(第三);
4)项目的 resources 即 classpath 根路径中(第四);

1.3、占位符${}

1)可以获取配置文件中的键的值赋给另一个键作为值;
2)可以获取框架提供的方法中的值如:random.int ;

1.4、bootstrap 配置文件

Spring Boot 中有两种上下文对象,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。bootstrap 主要用于从 额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一 个环境,它是任何 Spring 应用程序的外部属性的来源。bootstrap 里面的属性会优先加载, 它们默认也不能被本地相同配置覆盖。
1)特征:boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载;boostrap 里面的属性不能被覆盖;
2)应用:加密/解密场景;一些固定的不能被覆盖的属性;使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;

二、常见注解

2.1、核心注解

2.1.1、@SpringBootApplication

SpringBoot 的启动类注解,等同于@Configuration+@EnableAutoConfiguration+@ComponentScan 的组合;

2.1.2、@SpringBootConfiguration

是@Configuration 注解的派生注解,跟@Configuration 注解的功能一致,标注这个类是一个配置类;
@SpringBootConfiguration 是 springboot 的注解,而@Configuration 是 spring 的注解;

2.1.3、@Configuration

通过对bean对象的操作替代spring中xml文件;

2.1.4、@EnableAutoConfiguration

自动配置(auto-configuration):尝试根据你添加的 jar 依赖自动配置你的 Spring 应用;
@AutoConfigurationPackage 和@Import(AutoConfigurationImportSelector.class) 注解的组合;

2.1.5、@AutoConfigurationPackage

自动注入主类下所在包下所有的加了注解的类 (@Controller,@Service 等),以及配置类(@Configuration)

2.1.6、@Import({AutoConfigurationImportSelector.class})

导入普通的类;
导入实现了 ImportSelector 接口的类;
导入实现了 ImportBeanDefinitionRegistrar 接口的类;

2.1.7、@ComponentScan

组件扫描,可自动发现和装配一些 Bean;

2.1.8、@ConfigurationPropertiesScan

@ConfigurationPropertiesScan 扫描配置属性;
@EnableConfigurationProperties 注解的作用是使用 @ConfigurationProperties 注解的类生效;

2.2、控制层注解

2.2.1、@Controller

标识为控制类

2.2.2、@RestController

相当于@Controller+@ResponseBody 注解;
返回rest风格内容,无法跳转页面,InternalResourceViewResolver 也不起作用;

2.2.3、@GetMapping

指定为get请求,@RequestMapping(method = RequestMethod.GET)的缩写

2.2.4、@PostMapping

指定为post请求,是@RequestMapping(method = RequestMethod.POST)的缩写

2.2.5、@PutMapping

指定为put请求,@RequestMapping(method = RequestMethod.PUT)的缩写

2.2.6、@DeleteMapping

指定为delete请求,@RequestMapping(method = RequestMethod.DELETE)的缩写

三、监控检测

使用 Actuator 检查与监控服务

3.1、引入pom依赖

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

3.2、访问监控服务

1)默认可访问两个/actuator监控服务(/health与/info)

2020-08-01 09:04:08.409  INFO 14660 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
2020-08-01 09:04:08.478  INFO 14660 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

3.4、配置文件修改

#配置访问端点的根路径
management.endpoints.web.base-path=/actuator
# 开启指定访问端点,*表示所有
management.endpoints.web.exposure.include=*
# 屏蔽指定访问端点,如env,beans
management.endpoints.web.exposure.exclude=env,beans

3.3、常用监控指标接口

1)应用配置类:/beans、/info、/env、/env/{name}、/configprops、/mappings
2)监控指标类:/health、/dump、/trace、/metrics、/metrics/{name}
3)操作控制类:/shutdown

四、Admin使用(SBA)

4.1、简介

1)Spring Boot Admin 的使用是需要建立服务端与客户端,一个服务端可以监控多个客户端;
2)服务端:独立的项目,会将搜集到的数据在自己的图形界面中展示;
3)客户端:需要监控的项目;

4.2、服务端搭建

1)引入pom依赖
目前在 Spring Boot Admin Starter Server2.1.6 版本中不支持 Spring Boot2.2.x 版本, 只支持到 2.1.X

<dependency><groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.1.6</version>
</dependency>

2)开启启动类注解

@EnableAdminServer //开启 Spring Boot Admin 服务端

4.3、客户端搭建

1)引入pom依赖

<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.1.6</version>
</dependency>

2)指定服务端访问地址

#指定服务端的访问地址
spring.boot.admin.client.url=http://localhost:port

五、Logback日志

5.1、简介

1)Spring Boot 默认的日志管理组件,由 log4j 创始人设计;
2)在 spring-boot-starter 或者 spring-boot-starter-web 中已经包含了 Logback 的依赖;

5.2、Logback 读取配置文件方式

1)在 classpath 下查找文件 logback-test.xml;
2)如果文件不存在,则查找 logback.xml;
3)如果两个文件都不存在,LogBack 用 BasicConfiguration 自动对自己进行最小化配 置,这样既实现了上面我们不需要添加任何配置就可以输出到控制台日志信息;

5.3、添加logback.xml

resources/目录下添加logback.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?><configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->  <property name="LOG_HOME" value="d:/logback/logs/" /><!-- 控制台输出 -->   <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender"><!-- 日志输出编码 -->  <layout class="ch.qos.logback.classic.PatternLayout">   <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout>   </appender>   <!-- 按照每天生成日志文件 -->   <appender name="RollingFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>   <MaxHistory>30</MaxHistory></rollingPolicy>   <layout class="ch.qos.logback.classic.PatternLayout">  <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout> <!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender>     <!-- 日志输出级别 --><root level="info">   <appender-ref ref="Stdout" />   <appender-ref ref="RollingFile" />   </root> <!--日志异步到数据库 -->
<!--     <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">日志异步到数据库 <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">连接池 <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"><driverClass>com.mysql.jdbc.Driver</driverClass><url>jdbc:mysql://127.0.0.1:3306/databaseName</url><user>root</user><password>root</password></dataSource></connectionSource></appender> --></configuration>

5.4、使用

private final static Logger logger = LoggerFactory.getLogger(TestController.class);

5.5、屏蔽指定包中的日志输出

# 屏蔽org开头的包中日志
logging.level.org=off

六、打包方式

6.1、引入pom依赖

   <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

6.2、打包操作(idea)

Maven - 项目 - Lifecycle - install

6.3、运行

java -jar xxx.jar

七、多环境配置

1)结构
application-{profile}.properties/yml
dev环境:application-dev.properties/yml
test环境:application-test.properties/yml
prd环境:application-prod.properties/yml
2)打包启动(需要指定环境)
java -jar xxx.jar --spring.profiles.active={profile}

八、linux下脚本启动

1)使用步骤
修改脚本文件中的参数值
将启动脚本文件上传到 Linux 中
分配执行权限:chmod 777
启动命令:server.sh start
关闭命令:server.sh stop
2)脚本内容

#!/bin/bash
cd `dirname $0`CUR_SHELL_DIR=`pwd`
CUR_SHELL_NAME=`basename${BASH_SOURCE}`JAR_NAME="项目名称"
JAR_PATH=$CUR_SHELL_DIR/$JAR_NAME#JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:PermSize=128m"
JAVA_MEM_OPTS=""#如果是多环境配置需要在该选项中指定profile
SPRING_PROFILES_ACTIV="-Dspring.profiles.active=配置文件profile名称"
#如果没有多环境配置将 SPRING_PROFILES_ACTIV注释掉,将SPRING_PROFILES_ACTIV=""释放开
#SPRING_PROFILES_ACTIV=""
LOG_DIR=$CUR_SHELL_DIR/logs
LOG_PATH=$LOG_DIR/${JAR_NAME%..logecho_help()
{echo -e "syntax: sh $CUR_SHELL_NAME start|stop"
}if [ -z $1 ];thenecho_helpexit 1
fiif [ ! -d "$LOG_DIR" ];thenmkdir "$LOG_DIR"
fiif [ ! -f "$LOG_PATH" ];thentouch "$LOG_DIR"
fiif [ "$1" == "start" ];then# check serverPIDS=`ps --no-heading -C java -f --width 1000 | grep $JAR_NAME | awk '{print $2}'`if [ -n "$PIDS" ]; thenecho -e "ERROR: The $JAR_NAME already started and the PID is ${PIDS}."exit 1fiecho "Starting the $JAR_NAME..."# startnohup java $JAVA_MEM_OPTS -jar $SPRING_PROFILES_ACTIV $JAR_PATH >> $LOG_PATH 2>&1 &COUNT=0while [ $COUNT -lt 1 ]; dosleep 1COUNT=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}' | wc -l`if [ $COUNT -gt 0 ]; thenbreakfidonePIDS=`ps  --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}'`echo "${JAR_NAME} Started and the PID is ${PIDS}."echo "You can check the log file in ${LOG_PATH} for details."elif [ "$1" == "stop" ];thenPIDS=`ps --no-heading -C java -f --width 1000 | grep $JAR_NAME | awk '{print $2}'`if [ -z "$PIDS" ]; thenecho "ERROR:The $JAR_NAME does not started!"exit 1fiecho -e "Stopping the $JAR_NAME..."for PID in $PIDS; dokill $PID > /dev/null 2>&1doneCOUNT=0while [ $COUNT -lt 1 ]; dosleep 1COUNT=1for PID in $PIDS ; doPID_EXIST=`ps --no-heading -p $PID`if [ -n "$PID_EXIST" ]; thenCOUNT=0breakfidonedoneecho -e "${JAR_NAME} Stopped and the PID is ${PIDS}."
elseecho_helpexit 1
fi

SpringBoot补充知识点(一)相关推荐

  1. Django补充知识点——用户管理

    内容概要 1.Form表单 2.Ajax 3.布局,Django母板 4.序列化 5.Ajax相关 6.分页 7.XSS攻击 8.CSRF 9.CBV.FBV 10.类中用装饰器的两种方法 11.上传 ...

  2. SpringBoot 核心知识点整理!

    SpringBoot springboot 入门项目详解 springboot 配置文件的拆分 springboot 组件管理 + 注入 springboot 集成 Jsp.Thymeleaf 模板 ...

  3. SpringBoot 入门知识点详解

    Spring Boot 入门项目 springboot 介绍 springboot 引言 springboot 特点 springboot 约定大于配置 springboot 入门项目 1.引入项目依 ...

  4. springboot入门知识点(一)

    1.idea快捷键 ctrl+H   //全局搜索 2.springboot知识点 父级依赖可以不用写版本号 3.注解 1> @SpringBootApplication:springboot的 ...

  5. SpringBoot所有知识点详解,根据狂神说java老师的整理

    1.SpringBoot:Hello,World! SpringBoot简介 1.1.回顾什么是Spring Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod ...

  6. Java开发岗高频面试题全解析补充知识点(个人补充整理的知识点,非原文)

    第3章 Java核心技术 这里仅补充牛客专刊<Java开发岗高频面试题全解析>提到但是未展开讲解的知识点,个人收录向. 3.3.1 String.StringBuffer.StringBu ...

  7. 优酷电视剧爬虫代码实现一:下载解析视频网站页面(3)补充知识点:htmlcleaner使用案例...

    htmlcleaner 下载地址:htmlcleaner2_1.jar 源码下载:htmlcleaner2_1-all.zip 写一个测试用的html文件:html-clean-demo.html & ...

  8. 进阶10 补充知识点

    JDK9对集合添加的优化 of方法 JDK9的新特性: List接口,Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素 static <E> List&l ...

  9. SpringBoot SpringSecurity知识点

    明确三个接口GrantedAuthority(角色权限) UserDetails (用户信息) UserDetailsService(获取用户信息和用户权限) 角色表DO实现GrantedAuthor ...

最新文章

  1. 从构建分布式秒杀系统聊聊线程池
  2. Nginx 负载均衡 - linux下nginx加载配置文件异常处理,提示invalid PID number in “/run/nginx.pid“问题解决
  3. 2.13 break和continue
  4. Git入门教程(2)
  5. 无法在C语言软件里敲字,网页上不能输入文字怎么办
  6. solidity语言开发智能合约
  7. 端口 0-65536 TCP和UDP端口的区别
  8. windows下安装VM虚拟机和Ubuntu系统(附注册密钥)
  9. AFNetworking 文件断点下载详细解读
  10. html5 廖雪峰,廖雪峰 JavaScript Python Git 教程.pdf-原创力文档
  11. asp.net基于net的体检信息管理系统-计算机毕业设计
  12. Android版数据结构与算法(十二):经典排序算法再回顾
  13. PE系统纯净(可以识别nvme固态)
  14. C++结构型模式-适配器模式
  15. One or more errors occurred 报错
  16. 炫我科技渲染集群管理软件
  17. RPG游戏Demo学习笔记一
  18. 中医药大学计算机考试题,浙江中医药大学2013年级研究生《计算机应用》期末考试复习题...
  19. Web全栈工程师到底是个什么鬼?为什么Facebook声称:“我们只招全栈工程师!”
  20. libreCAD源码阅读笔记1

热门文章

  1. 实时linux部署测试
  2. 鸽兔同场+求解方程+数组距离
  3. Python 下载大文件,哪种方式速度更快
  4. 【iOS】判断硬件型号
  5. 电脑无XD软件查看XD文件
  6. 中国哪些公司在做大数据
  7. 使用crm客户管理系统有四大好处
  8. Latex编辑器无法生成参考文献的可能原因
  9. 如何用python整理文件夹_python按照文件创建日期整理文件至文件夹
  10. gg说,屁股决定脑袋