springboot31重识spring01-环境搭建actuator监控属性配置多环境配置

寻渝记      2022-05-02     564

关键词:

 1 前言

1.1 学习阶段说明  

  从2016年9月开始接触IT,学习经历主要分为以下三个阶段

  1.1.1 入门阶段

    从最基础的前端技术HTML、JavaScript、CSS开始入门,再到后端技术Java基础、MySQL数据库基础知识、JDBC、Servclet、JSP。利用这些简单技术实现了从前端、后台、到数据库单表的CRUD操作。

  1.1.2 进阶阶段

    刚入行时常常听别人说起XXX框架好NB,可以干XXX。我接触了第一个框架Spring,紧接着MyBatis;再到前端框架Angular2、Vue。各种前后端框架的学习让我从入门时对编程的枯燥感觉逐渐消退,因为站在巨人的肩膀上真的可以省下好多经历和时间,前提是你从基础一步步走过来。

  1.1.3 项目阶段

    研一暑假开始跟着团队老师进行项目开发,虽然开始只是做一些边角料的事情,但是还是觉得收获颇丰。刚开始都是模仿别人依葫芦画瓢进行业务实现,当时觉得这真的好LOW,好LOW,好LOW。现在回想起来,觉得当时的想法是多么的幼稚可笑,总想着一嘴就吃个胖子,一步就登上山顶,简直太愚蠢啦。还好,当时没有放弃,慢慢跟着项目组老师一边学习、一边摸索,到如今算是一个初级程序员吧。

  随着,SpringBoot、SpringCloud等微服务相关技术的出现,逐渐发现Spring大家族知识真的好强大,强大到没有一个Java程序员不知道它,不使用它。鉴于之前对Spring先关知识的不重视,所系现在决定重新学习一边Spring相关知识点来重识Spring。

  1.2 重识Spring系列说明

    本系列文章都是基于SpringBoot作为基础开发环境的;

    利用一个Maven项目来管理各个知识点对应的所有SpringBoot项目,参考博文

    思维导图忽略章节编号,重点在层次划分。

 

2 项目环境

  JDK: 1.8

  MAVEN: 3.5.0

  SpringBoot:2.1.3

  开发工具:IntelliJ IDEA 2017.2.5 旗舰版

 

3 开发环境搭建

 

3.1 利用IDEA创建SpringBoot项目

  3.1.1 Web项目基本依赖

    spring-boot-starter-web:该依赖包含了Spring环境基础依赖、SpringMVC框架依赖等等

    spring-boot-starter-test:测试环境依赖

  3.1.2 辅助依赖

    spring-boot-devtools:开发阶段项目自动重启相关的依赖,参考博文

    lombok:代码简化相关依赖

  3.1.3 完整POM文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5     <parent>
 6         <groupId>org.springframework.boot</groupId>
 7         <artifactId>spring-boot-starter-parent</artifactId>
 8         <version>2.1.4.RELEASE</version>
 9         <relativePath/> <!-- lookup parent from repository -->
10     </parent>
11     <groupId>com.xunyji</groupId>
12     <artifactId>chapter0101</artifactId>
13     <version>0.0.1-SNAPSHOT</version>
14     <name>chapter0101</name>
15     <description>Demo project for Spring Boot</description>
16 
17     <properties>
18         <java.version>1.8</java.version>
19     </properties>
20 
21     <dependencies>
22         <dependency>
23             <groupId>org.springframework.boot</groupId>
24             <artifactId>spring-boot-starter-web</artifactId>
25         </dependency>
26 
27         <dependency>
28             <groupId>org.springframework.boot</groupId>
29             <artifactId>spring-boot-devtools</artifactId>
30             <scope>runtime</scope>
31         </dependency>
32         <dependency>
33             <groupId>org.projectlombok</groupId>
34             <artifactId>lombok</artifactId>
35             <optional>true</optional>
36         </dependency>
37         <dependency>
38             <groupId>org.springframework.boot</groupId>
39             <artifactId>spring-boot-starter-test</artifactId>
40             <scope>test</scope>
41         </dependency>
42     </dependencies>
43 
44     <build>
45         <plugins>
46             <plugin>
47                 <groupId>org.springframework.boot</groupId>
48                 <artifactId>spring-boot-maven-plugin</artifactId>
49             </plugin>
50         </plugins>
51     </build>
52 
53 </project>
pom.xml

3.2 环境测试

  3.2.1 创建一个测试控制层接口

    该接口用来模拟RESTful接口,涉及到@RestController、@RequestMapping、@Slf4j等相关注解参见 -> 参考博文

package com.xunyji.chapter0101.web;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author AltEnter
 * @create 2019-04-06 15:24
 * @desc 测试控制层
 **/
@RestController
@RequestMapping(value = "/test")
@Slf4j
public class TestController {
    @GetMapping(value = "/connect")
    public String connect() {
        String msg = "前后端连接测试";
        log.info(msg);
        return msg;
    }
}
测试控制层源代码

   3.2.2 启动项目

    (1)直接利用IDEA启动:进入到main方法所在类右键 -> 执行即可

    (2)利用MAVEN启动:进入项目根目录执行 mvn spring-boot:run 

    (3)利用jar包启动(项目部署时用):进入项目根目录执行 mvn clean package -> 进入target目录后会发现多了一个jar文件 -> 利用 java -jar jar文件名

 

  3.2.3 SpringBoot项目启动说明

    SpringBoot默认使用内置的Tomcat作为应用容器;

    SpringBoot默认暴露8080端口

  3.2.4 访问RESTful接口

    利用浏览器访问 http://127.0.0.1:8080/test/connect

 3.3 SpringBoot项目监控

  SpringBoot提供了Actuator对项目进行监控,例如Bean监控、URL监控等等。参考博文

  实例之判断Bean存在与否:在开发&调试过程中,提示某个Bean找不到。此时就需要查看运行环境中有没有这个bean,以便快速排除出该问题的具体原因。

  3.3.1 集成Actuator

    (1)引入spring-boot-starter-actuator依赖:在pom文件中引入 spring-boot-starter-actuator 即可

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

    (2)查看actuator提供的监控列表:在浏览器中访问 http://127.0.0.1:8080/actuator 即可

  3.3.2 坑之Actuator监控端点暴露

    (1)问题描述:集成Actuator后,全部使用默认配置时,actuator只暴露了几个可用的接口信息,利用http://127.0.0.1:8080/actuator可以查看暴露的接口信息;当你想使用http://localhost:8080/actuator/beans 查看项目中存在哪些Bean时会发现,这个链接根本不可用

    (2)问题根源:SpringBoot项目即使集成了Actuator,也不会默认提供所有的监控URL,需要开发者通过配置文件的方式开启某些监控端点

    (3)解决问题:在application.yml配置文件中开启所有端点即可,目的是暴露所有端点给web端,这样actuator提供的监控端点就可以生效啦

 

    (4)重启醒目后查看控制台actuator有关的暴露端点数量:开启前actuator提供的端口只有两个有效,开启后由15个可用

 

     (5)实例测试:开启暴露所有后利用http://127.0.0.1:8080/actuator可以查看此时actuator暴露的接口信息,此时利用http://localhost:8080/actuator/beans查看项目的Bean信息就会生效啦

 

4 配置文件

  参考博文

5 多环境配置

  参考博文

 

 

 

day01-springboot基本介绍(代码片段)

SpringBoot基本介绍1.SpringBoot是什么?官网地址:https://spring.io/projects/spring-boot学习文档:https://docs.spring.io/spring-boot/docs/2.7.10-SNAPSHOT/reference在线API:https://docs.spring.io/spring-boot/docs/2.7.10-SNAPSHOT/api/SpringBoot可以轻松创建独立的,生产级... 查看详情

springboot2.0基础案例(01):环境搭建和restful风格接口(代码片段)

一、SpringBoot框架的特点1、SpringBoot2.0特点1)SpringBoot继承了Spring优秀的基因,上手难度小2)简化配置,提供各种默认配置来简化项目配置3)内嵌式容器简化Web项目,简化编码SpringBoot则会帮助开发着快速启动一个web容器,在SpringB... 查看详情

springboot-01

1、统一环境2、maven设置[图8]3、idea设置maven[图9]4、springboothelloworld浏览器发送hello,服务器接收、处理、响应helloworld<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par 查看详情

springboot.01.springboot概述及基本环境搭建(代码片段)

SpringBoot概述及基本环境搭建SpringBoot概述引言SpringBoot优势SpringBoot约定环境搭建环境要求准备工作1.新建项目空间2.配置Maven3.配置LogSupport创建项目的两种方式maven方式搭建1.新建Module2.pom.xml3.application.yml4.SpringBoot01MavenApplication.java5.T... 查看详情

springboot.01.springboot概述及基本环境搭建(代码片段)

SpringBoot概述及基本环境搭建SpringBoot概述引言SpringBoot优势SpringBoot约定环境搭建环境要求准备工作1.新建项目空间2.配置Maven3.配置LogSupport创建项目的两种方式maven方式搭建1.新建Module2.pom.xml3.application.yml4.SpringBoot01MavenApplication.java5.T... 查看详情

重识nginx-01nginx主要应用场景及版本概述

文章目录Nginx的三个主要应用场景静态资源服务反向代理服务API服务WhyNginxNginx的优点Nginx本发布情况(mainline)Nginx的组成开源免费的Nginx和商业版NginxPlusTengine免费OpenResty和商业版OpenRestyNginx的三个主要应用场景静态资源服务通过本... 查看详情

在 Spring Boot 中将 Angular 环境变量传递给编译的静态 Angular 文件

】在SpringBoot中将Angular环境变量传递给编译的静态Angular文件【英文标题】:PassAngularenvironmentvariablestocompiledstaticangularfilesinspringboot【发布时间】:2020-10-1511:31:08【问题描述】:我现在正在使用Angular和SpringBoot来构建网站项目。当... 查看详情

重识nginx-系列导读

...系统层性能优化源码角度深入使用Nginx与OpenRestyNginx初始重识Nginx-01Nginx主要应用场景及版本概述重识Nginx-02手把手教你编译适合自己的nginx1.22.0Nginx基础架构Http模块详解反向代理与负载均衡Nginx的系统层性能优化源码角度深入使用N... 查看详情

在 SecurityContext 中找不到 Authentication 对象 - Spring 5

...t-Spring5【发布时间】:2022-01-2221:31:15【问题描述】:我是SpringBoot和SpringSecurity的新手,并且继承了一个使用它们的webapp项目。我们将把webapp迁移到一个新的部署环境。我 查看详情

springboot配置文件-多环境配置

一. 多环境配置的好处:1.不同环境配置可以配置不同的参数~2.便于部署,提高效率,减少出错~二. properties多环境配置1.配置激活选项spring.profiles.active=dev2.添加其他配置文件application.properties:#激活哪一个环境的配置文件spr... 查看详情

本地环境中的 Spring DiscoveryClient

...omerService和orderService。两者都是包含在自己的dockerfile中的Springboot应用程序。在生产中,它们应该使用Kubernetes进行管理。因此,每个服务可能有多个实 查看详情

如何在 IntelliJ 中设置 spring 活动配置文件环境变量

...时间】:2017-05-0519:16:31【问题描述】:我在Eclipse中使用SpringBoot应用程序(maven项目)。当我运行maven项目的testclean目标时,我想加载活动配置文件我在application.propertie 查看详情

详解springboot配置文件之多环境配置

一.多环境配置的好处:1.不同环境配置可以配置不同的参数~2.便于部署,提高效率,减少出错~二.properties多环境配置1.配置激活选项spring.profiles.active=dev2.添加其他配置文件application.properties:#激活哪一个环境的配置文件spring.profiles... 查看详情

springboot01,spring完全注解(零配置)编程方式

前言:   springboot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置。有了它,你可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功夫,甚至完全不用配... 查看详情

springboot+elasticsearch

springdataelasticsearchelasticsearch2.0.0.RELEASE2.2.01.4.0.M11.7.31.3.0.RELEASE1.5.21.2.0.RELEASE1.4.41.1.0.RELEASE1.3.21.0.0.RELEASEhttps://github.com/helloworldtang/spring-data-elasticsearch1、Noneo 查看详情

通过环境变量覆盖 Spring Boot yaml 属性

】通过环境变量覆盖SpringBootyaml属性【英文标题】:OverrideSpringBootyamlpropertyviaenvironmentvariable【发布时间】:2022-01-1223:25:38【问题描述】:使用SpringBoot2.6.1,如果我有一个application.properties文件,看起来像:spring.datasource.url="jdbc://bl... 查看详情

Spring Boot 中的记录器问题

】SpringBoot中的记录器问题【英文标题】:LoggerissueinSpringBoot【发布时间】:2019-01-1301:31:43【问题描述】:我已经使用log4j2.properties文件在SpringBoot应用程序中实现了Logging。请在下面的参考网址中找到代码:SpringBoot-log4j2.propertiescrea... 查看详情

Spring Boot (Batch) - 注入数据源

】SpringBoot(Batch)-注入数据源【英文标题】:SpringBoot(Batch)-InjectDatasource【发布时间】:2018-01-2713:45:31【问题描述】:我有一个SpringBoot(面向批处理)应用程序,它使用数据源来完成批处理作业并将内容写入数据库。我在application.y... 查看详情