SpringClud一站式学习之Springboot
- 1. Springboot介绍
- 2. Springboot中常用的包
- 3. 创建Springboot工程
- 3.1.脚手架创建 spingboot工程
- 方法一:使用Spring Initializr
- 方法二:使用Spring Tool 4 for Eclipse (STS4)
- 方法三:使用IntelliJ IDEA
- 3.2. 配置springboot
- 3.3. 编写应用接口Cotroller
- 3.4. 启动服务
- 3.5. 指定不同的环境
- 4. springboot读取配置信息
- 4.1. 使用Environment对象
- 4.2. 使用@Value注解
- 4.3. 使用使用配置类
- 5. springboot自动监控
- 6. Spring Boot Admin
1. Springboot介绍
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用程序的初始搭建以及开发过程,通过提供一系列的“约定大于配置”的特性来达到简化配置的目的。以下是Spring Boot的一些核心特性:
-
独立运行:Spring Boot可以让开发者创建不需要部署WAR文件的独立应用程序,只需要一个JAR文件即可运行。
-
自动配置:Spring Boot会根据添加的jar依赖自动配置Spring应用程序,例如添加
spring-boot-starter-web
依赖会自动配置Tomcat和Spring MVC。 -
无需XML配置:Spring Boot不需要任何XML配置,所有的配置都可以通过注解和Java配置类来完成。
-
微服务支持:Spring Boot非常适合用来创建微服务,它提供了与Spring Cloud的集成。
-
生产就绪:Spring Boot提供了应用程序监控、健康检查等生产环境所需的特性。
-
内嵌容器:Spring Boot内置了Tomcat、Jetty等Servlet容器,无需部署WAR文件。
-
无代码生成和XML配置:Spring Boot不需要代码生成和XML配置,只要通过注解即可完成配置。
-
命令行界面:Spring Boot提供了一个命令行界面,用于快速启动和停止Spring Boot应用程序。
-
自动管理依赖:Spring Boot的
pom.xml
或build.gradle
文件中,会自动管理项目依赖。 -
健康检查和外部配置:Spring Boot提供了应用程序健康检查和外部配置管理。
2. Springboot中常用的包
3. 创建Springboot工程
3.1.脚手架创建 spingboot工程
创建Spring Boot工程的方法有多种,以下是几种常见的方法:
方法一:使用Spring Initializr
- 访问Spring Initializr网站。
- 选择项目元数据(如项目名称、描述、包名等)。
- 选择依赖(如Web、JPA、Security等)。
- 点击“Generate”生成项目。
- 下载项目压缩包并解压。
- 使用IDE(如IntelliJ IDEA或Eclipse)导入项目。
方法二:使用Spring Tool 4 for Eclipse (STS4)
- 打开Eclipse。
- 选择“File” > “New” > “Spring Starter Project”。
- 填写项目信息,选择需要的依赖。
- 点击“Next”直到完成项目创建。
方法三:使用IntelliJ IDEA
- 打开IntelliJ IDEA。
- 选择“File” > “New” > “Project”。
- 选择“Spring Initializr”选项。
- 填写项目信息,选择需要的依赖。
- 点击“Next”直到完成项目创建。
可以看到新生成一个用于web开发的工程,其中,spring-boot-starter-parent 是 Spring Boot 提供的 Maven 父项目(POM),它在 Spring Boot 项目中扮演着非常重要的角色。spring-boot-starter-parent 提供了所有必要的依赖,包括 Spring Boot、Spring 核心、Spring Data 等。通过继承这个 POM,开发者可以轻松地引入所需的依赖,而无需手动添加。jar的版本可以直接在pom 手动更改。
pom文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>springboot002</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot002</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></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><?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>springboot002</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot002</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.6.RELEASE</version><scope>compile</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3.2. 配置springboot
项目的端口默认是8080application.properties
3.3. 编写应用接口Cotroller
@RestController
public class DemoController {@GetMapping("/hello")public String testHello(){return "hello springboot!";}
}
3.4. 启动服务
服务起来后可以看到是springboot是内嵌了tomcat
请求8080端口
http://localhost:8080/hello
3.5. 指定不同的环境
实际应用中会有多个环境,一个环境用于开发测试,一个用于功能测试,不用的环境有不用的请求地址,那么可以建立多个配置文件,并通过在application.properties指定当前的配置文件来指定环境。
application-dev.properties 端口是8082
spring.profiles.active=dev
4. springboot读取配置信息
springboot读取配置信息有3种方法
4.1. 使用Environment对象
Environment对象提供了访问所有配置属性的方法。你可以在任何Spring管理的Bean中注入Environment对象来读取配置信息。
import org.springframework.core.env.Environment;
新建立controller
package com.example.springboot002.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** @Description* @Date: $ $* $* $**/
@RestController
public class ConfigController {@Autowiredprivate Environment env;@GetMapping("/config")public Object getConfig(){Map<String,Object> result=new HashMap<>();result.put("profile",env.getProperty("spring.profiles.active"));return result;}
}
4.2. 使用@Value注解
定义个字段,其含义为配置文件中的含义,:8080是为了防止没有值的时候给的默认值;
@Value("${server.port:8080}")private String port;
4.3. 使用使用配置类
以上2种配置都是单字段的值,但是往往我们有些配置是成组出现的,例如数据源的地址等。为了对这些进行集中管理,使用配置类进行统一管理,创建一个类,spring会自动将值注入到该类中,我们再application-dev.propertise中增加spring.name=fangfang属性
package com.example.springboot002.config;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;/*** @Auther: lifang* @Description* @Date: $ $* $* $**/
@ConfigurationProperties(prefix = "spring")
@Configuration
public class spring {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
package com.example.springboot002.controller;import com.example.springboot002.config.spring;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** @Auther: lifang* @Description* @Date: $ $* $* $**/
@RestController
public class ConfigController {@Autowiredprivate Environment env;@Value("${server.port:8080}")private String port;private spring spring1;@GetMapping("/config")public Object getConfig(){Map<String,Object> result=new HashMap<>();result.put("profile",env.getProperty("spring.profiles.active"));result.put("port",port);result.put("name",spring1.getName());return result;}
}
5. springboot自动监控
Spring Boot 自带了一套强大的监控和健康检查机制,这些机制可以帮助开发者和运维人员监控应用程序的健康状况和性能指标。以下是一些关键的组件和方法,用于实现Spring Boot的自主监控:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
启动项目后,访问,UP 表示健康
http://localhost:8082/actuator/health
如果需要添加其他因素判断健康状态,可以继承监控接口AbstractHealthIndicator ,正常健康情况是不显示的,如果需要显示则在配置文件中进行配置。
management.endpoint.health.show-details=always
public class custAutoActuat extends AbstractHealthIndicator {@Overrideprotected void doHealthCheck(Health.Builder builder) throws Exception {builder.up().withDetail("customo","fangfang自定义信息");}
}
6. Spring Boot Admin
Spring Boot Admin 是一个用于管理和监控Spring Boot应用程序的开源项目。它提供了一个用户界面,允许你查看和管理Spring Boot应用程序的健康状况、度量指标、日志文件等。Spring Boot Admin 可以作为一个独立的应用程序运行,也可以集成到现有的Spring Boot应用程序中。
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.1.6</version>
</dependency>
在启动类上添加注解
@EnableAdminServer
客户端可以原则注册上
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9b62d65120df4d5b861420c9a47a8c85.png)