前言
此系列博客是个人在学习springBoot的学习笔记,算是一个记录吧,一方面记录学习的内容,一方面记录学习中犯下的错误。学习springBoot选择的是GitHub上一个比较著名的项目,链接如下https://github.com/xkcoding/spring-boot-demo.git。这是一个从易到难的项目,目标:完成本地实现。技术差,文笔差,学习能力差,啥都差,欢迎指正,拒绝喷人
一、要实现的demo是什么?
spring-boot 集成 spring-boot-admin 来可视化的监控 spring-boot 程序的运行状态,可以与 actuator 互相搭配使用,客户端和服务器端都有展示。注意事项:
1.新建项目是在原先的多模块项目下的其中一个模块下再新建模块。
2.父级的依赖不再粘贴,可以去翻之前的博客,然后复制到最外层的pom.xml。
3.注意端口的设置,服务器端和客户端端口不要一样,否则提示端口被占用。设置方式在yml文件中
4.服务器端都点一点,我只截了进入的页面。
5.不需要再引入actuator依赖,引入admin就会引入actuator。
二、实现步骤
1.新建项目
1.新建模块:
项目结构如下
spring-boot-admin的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"> <parent> <artifactId>spring-boot-learning-demo</artifactId> <groupId>com.xkcoding</groupId> <version>1.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>spring-boot-demo-admin</artifactId> <packaging>pom</packaging> <properties> <spring-boot-admin.version>2.1.0</spring-boot-admin.version> </properties> <modules> <module>spring-boot-demo-admin-client</module> <module>spring-boot-demo-admin-server</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-dependencies</artifactId> <!--上文配置properties--> <version>${spring-boot-admin.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
client包的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> <artifactId>spring-boot-demo-admin-client</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot-demo-admin-client</name> <description>Demo project for Spring Boot</description> <parent> <groupId>com.xkcoding</groupId> <artifactId>spring-boot-demo-admin</artifactId> <version>1.0.0-SNAPSHOT</version> </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-web</artifactId> </dependency> <!-- 客户端包 --> <!-- 有人会再引入actuator依赖,不过没必要 spring-boot-admin-starter-client,该依赖会引入actuator--> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> <!-- 安全认证 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <finalName>spring-boot-demo-admin-client</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
server的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> <artifactId>spring-boot-demo-admin-server</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot-demo-admin-server</name> <description>Demo project for Spring Boot</description> <parent> <groupId>com.xkcoding</groupId> <artifactId>spring-boot-demo-admin</artifactId> <version>1.0.0-SNAPSHOT</version> </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-web</artifactId> </dependency> <!-- 服务端:带UI界面 --> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <finalName>spring-boot-demo-admin-server</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.代码实现
2.1 indexController代码如下(示例):
package com.xkcoding.admin.client.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { // 请求路径bai 可以为空或者/ /*eg: 在springmvc中 配置 @RequestMapping(value={"test", "test1"})如果你项目端口是8080;然后你要访问这个方法, 你可以通过 http://localhost:8080/test或者http://localhost:8080/test1来访问*/ @GetMapping(value = {"", "/"}) public String index() { return "This is a Spring Boot Admin Client."; } }
2.2 SpringBootDemoAdminClientApplication启动类如下
package com.xkcoding.admin.client; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDemoAdminClientApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoAdminClientApplication.class, args); } }
2.3 application.yml文件如下
server: port: 8080 servlet: context-path: /demo spring: application: # Spring Boot Admin展示的客户端项目名,不设置,会使用自动生成的随机id name: spring-boot-demo-admin-client boot: admin: client: # Spring Boot Admin 服务端地址 url: "http://localhost:8000/" instance: metadata: # 客户端端点信息的安全认证信息 user.name: ${spring.security.user.name} user.password: ${spring.security.user.password} security: user: name: xkcoding password: 123456 management: endpoint: health: # 端点健康情况,默认值"never",设置为"always"可以显示硬盘使用情况和线程情况 show-details: always endpoints: web: exposure: # 设置端点暴露的哪些内容,默认["health","info"],设置"*"代表暴露所有可访问的端点 include: "*"
2.4 服务器端SpringBootDemoAdminServerApplication 启动类:
package com.xkcoding.admin.server; import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableAdminServer @SpringBootApplication public class SpringBootDemoAdminServerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoAdminServerApplication.class,args); } }
2.5 application.yml文件
server: port: 8000
总结
1.新建yml文件时没有这个类型,可以再这里新建
2.项目的结构
项目的运行结果: