• SpringBoot31 重识Spring01-环境搭建、Actuator监控、属性配置、多环境配置


     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 多环境配置

      参考博文

     

  • 相关阅读:
    ListBox的数据绑定
    GridView中加入新行方法
    一个事务的例子
    用sql语句查询从N条到M条的记录
    用户注册表中日期输入的解决方案
    对分页控件进行分页的封装
    我的触发器
    缓存DataSet以提高性能
    网站访问统计在Global.asax中的配置
    给表格控件绑定数据库内容的封装
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/10662196.html
Copyright © 2020-2023  润新知