springboot核心(配置、环境、注解、异常、监控)

[复制链接]
发表于 2024-11-23 14:09:22 | 显示全部楼层 |阅读模式

1.1 springboot的核心配置

1.1.1 常规配置

image.png

1.1.2 日志配置 logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">

<encoder>

     <pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

     </pattern>

  </encoder>

</appender>

<appender name="rollingFile"

class="ch.qos.logback.core.rolling.RollingFileAppender">

  <file>./logs/server.log</file>

  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

     <fileNamePattern>./logs/server.%d{yyyy-MM-dd}.%i.log

     </fileNamePattern>

     <timeBasedFileNamingAndTriggeringPolicy

        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

        <maxFileSize>20MB</maxFileSize>

     </timeBasedFileNamingAndTriggeringPolicy>

     <maxHistory>10</maxHistory>

  </rollingPolicy>

  <encoder>

     <pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

     </pattern>

  </encoder>

</appender>

<appender name="async-stdout" class="ch.qos.logback.classic.AsyncAppender">

<appender-ref ref="stdout" />

  <includeCallerData>true</includeCallerData>

</appender>

<appender name="async-rollingFile" class="ch.qos.logback.classic.AsyncAppender">

<appender-ref ref="rollingFile" />

  <includeCallerData>true</includeCallerData>

</appender>

<logger name="org.quartz.impl.jdbcjobstore.JobStoreTX" level="INFO"/>

<logger name="org.quartz.impl.jdbcjobstore.StdRowLockSemaphore" level="INFO"/>

<logger name="org.springframework.amqp.rabbit.core.RabbitTemplate" level="INFO"/>

<logger name="org.springframework.amqp.rabbit.listener.BlockingQueueConsumer" level="INFO"/>

<root level="INFO">

<appender-ref ref="async-stdout" />

  <appender-ref ref="async-rollingFile" />

</root>

</configuration>

1.1.3 多环境配置

image.png

image.png

一个jar包俩配置文件,同时启动俩个,在不同的cmd页面

image.png

image.png

1.2 springboot的核心注解与统一异常

1.2.1 核心注解

image.png

1.2.2 统一异常处理项目3.2.2

1.2.2.1 统一异常处理类MyControllerAdvice.java

package com.agan.springboot.helloworld.exception;


import java.util.HashMap;

import java.util.Map;


import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

/\*\*

 \* @version 1.0

 \*/

@ControllerAdvice

public class MyControllerAdvice {


   /\*\*

    \* 全局捕获异常,只要作用在@RequestMapping方法上,所有的异常信息都会被捕获到。

    \* @param ex

    \* @return

    \*/

   @ResponseBody

   @ExceptionHandler(value=Exception.class)

   public Map<String,Object> errorHandler(Exception ex){

      Map<String,Object> map=new HashMap<String, Object>();

      map.put("code", -1);

      map.put("msg", ex.getMessage());

      return map;



   }



   @ResponseBody

   @ExceptionHandler(value=BusinessException.class)

   public Map<String,Object> errorHandler(BusinessException ex){

      Map<String,Object> map=new HashMap<String, Object>();

      map.put("code", ex.getCode());

      map.put("msg", ex.getMsg());

      return map;



   }

}

1.1 如何监控springboot的监控状况

1.1.1 使用actuator检查与监控springboot健康状况3.2.2

image.png

image.png

image.png

image.png

1.1.1 可视化的springboot-admin

image.png

image.png

image.png

1.1.1.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.agan.springboot</groupId>

<artifactId>springboot-admin</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>springboot-admin</name>

<description>Demo project for Spring Boot</description>

<parent>

<groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter-parent</artifactId>

  <version>1.4.7.RELEASE</version>

  <relativePath/> <!-- lookup parent from repository -->

</parent>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  <java.version>1.8</java.version>

</properties>

<dependencies>

<dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-actuator</artifactId>

  </dependency>

  <dependency>

      <groupId>de.codecentric</groupId>

      <artifactId>spring-boot-admin-server</artifactId>

      <version>1.5.4</version>

  </dependency>

  <dependency>

      <groupId>de.codecentric</groupId>

      <artifactId>spring-boot-admin-server-ui</artifactId>

      <version>1.5.4</version>

  </dependency>

  <dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-test</artifactId>

     <scope>test</scope>

  </dependency>

</dependencies>

<build>

<plugins>

<plugin>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-maven-plugin</artifactId>

 </plugin>

</plugins>

</build>

</project>





#### 1.1.1.1     启动类

package com.agan.springboot.springbootadmin;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import de.codecentric.boot.admin.config.EnableAdminServer;

@SpringBootApplication

@EnableAdminServer

public class SpringbootAdminApplication {

public static void main(String[] args) {

SpringApplication.run(SpringbootAdminApplication.class, args);

}

}




### 1.1.1 启动3.2.2和3.5.2

![image.png](data/attachment/forum/202411/23/140548t3z5povxe1q1az1f.png "image.png")

![image.png](data/attachment/forum/202411/23/140630bc43ele5vcvveaew.png "image.png")

Metrics:

gauge:                  每个http请求的平均耗时(ms)

instance.uptime:       运行时间

mem:                    内存

heap:                   堆

stack:                  栈

theads:                 当前线程

peak:                   峰值max

daemon:                 守护线程数

total started:        总启动数

Trace :                 当前项目死活

processors:            cpu核数

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

GMT+8, 2025-9-8 02:22 , Processed in 0.101139 second(s), 35 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表