Springboot学习

导读:本篇文章讲解 Springboot学习,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1 SpringBoot概述

SpringBoot 是使用最小的配置去启动Spring的项目。提供一种快速使用Spring项目的方式!!!!

Spring缺点:
	1 配置繁琐
	2 依赖繁琐

SpringBoot功能:
	1 自动配置
		一个运行时的过程
	2 起步依赖
		本质是一个Maven项目对象模型(POM),定义了对其他库的传递依赖
		即,将具备某种功能的坐标打包到一起,并提供一些默认的功能。 
	3 辅助功能
		提供一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标、外部配置等。.   

2 SpringBoot入门

实现步骤:
	1 创建Maven项目
	2 导入SpringBoot起步依赖
	3 定义Controller
	4 编写引导类(SpringBoot项目入口)
	5 启动测试

在pom.xml文件中引入一些依赖

<!--springboot工程需要继承的父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
    </parent>

    <dependencies>
        <!--web开发的起步依赖        -->

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

        </dependency>
    </dependencies>

引导类编写,以后直接运行该类的mian方法就可启动SpringBoot项目 在这里插入图片描述

小结
1 SpringBoot在创建项目时,使用jar的打包方式
2 SpringBoot的引导类是项目的入口
3 SpringBoot 与 Spring 构建项目,业务代码编写方式一样

3 使用idea快速构建SpringBoot工程

1 首先创建新工程的操作下图: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 2 打开项目后,自动编写好了Application类,即项目的入口,可直接启动项目

在这里插入图片描述 3 直接在里面写Controller类即可

4 SpringBoot配置

4.1 配置文件分类

SpringBoot是基于约定的,如想使用自己的配置替换默认配置,可使用application.propertiesapplication.ymlapplication.yaml)配置

格式: properties:

server.port = 8080

yml:

server:
	port: 8080

同级目录下优先级:properties>yml>yaml

4.2 yaml基本语法

1 大小敏感
2 数据值前面必须有空格,作分隔符!!!!!
3 使用缩进表层级关系
4 只能使用空格缩进
5 相同层级元素左侧对齐
6 # 表注释

数据格式:

1 对象(map):键值对集合
	如下,person:后有空格,name:后有空格
person:
	name:xxx
#行内写法
person: {name: xxx}
2 数组:
address:
	-xxx1
	-xxx2
#行内写法
address: [xxx1,xxx2]
3 纯量:单个、不可再分的值
msg1: 'xxx' #单引忽略转义字符
msg2: "xxx" #双引识别转义字符
参数引用:
name:xxx
person:
	name: ${name} #引用上面定义的name值

4.3 读取配置文件内容

方式一 :@Value

@Value("${name}") //name要与yaml文件里的name字段对应
private String name;

@Value("${person.name}")
private String person_name;

方式二:Environment

//注入一个环境对象
@Autowired
private Environment env;

env.getProperty("键的名称")

方式三:@ConfigurationProperties

//将对象属性值自动注入对应位置
@Component //表示该类被spring识别,是一个bean
@ConfigurationProperties(prefix = " ") //将属性自动注入对应位置,prefix加入前缀,指定
public class Person(){
	private String name;
	private int age;

	//get set toString方法
}

在这里插入图片描述 在pom.xml文件里加入依赖即可解决

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

4.4 profile

profile功能用于进行动态配置切换的。

4.4.1 profile配置方式

方式一:多profile文件方式 在这里插入图片描述

默认是8080端口号,如需特定的配置文件需要在application.properties里激活
spring.profiles.active=dev  #表示激活application-dev.properties文件
运行后:

在这里插入图片描述

方式二: yml多文档方式 在这里插入图片描述

通过---进行划分,再调用active进行激活

在这里插入图片描述

4.4.2 profile激活方式

方式一:配置文件

如4.4.1小结所示

方式二:虚拟机参数 在这里插入图片描述

在VM options指定
-Dspring.profiles.active=dev

方式三:命令行参数 在这里插入图片描述

可在cmd命令行里:
java -jar xxx.jar --spring.profiles.active=dev

4.5 内部配置加载顺序

加载优先级顺序:
1 file:./config/:当前项目下的/config目录下
2 file:./ :当前项目的根目录
3 classpath:/config/:classpath的/config目录
4 classpath:/ :classpath的根目录

5 SpringBoot整合

5.1 整合Junit

步骤:
	1 搭建SpringBoot工程
	2 引入starter-test起步依赖
	3 编写测试类
	4 添加测试相关注解
			@RunWith(SpringRunner.class)
			@SpringBootTest(classes = 启动类.class)
	5 编写测试方法

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

5.2 整合Redis

步骤:
	1 搭建Spring Boot工程(用idea选NoSql)
	2 引入redis起步依赖
	3 配置redis相关属性
	4 注入RedisTemplate模板
	5 编写测试方法,测试

在这里插入图片描述

默认自动链接配置本机redis。
通过application.yml配置相关redis信息,以此更改默认配置

5.3 整合MyBatis

步骤:
	1 搭建SpringBoot工程(用idea 选Sql里mybatis与mysql)
	2 引入mybatis起步依赖,添加mysql驱动
	3 编写DataSource和MyBatis相关配置
	4 定义表和实体类
	5 编写dao和mapper文件、纯注解开发
	6 测试

注解形式:(无需配置mybatis)

先通过application.yml配置mysql数据库基本信息

在这里插入图片描述

然后创建实体类,接着创建接口方法,采用注解形式进行数据库查询

在这里插入图片描述

最后进行测试

在这里插入图片描述

6 SpringBoot原理分析

6.1 自动配置

6.1.1 Condition

Condition条件判断功能,可实现选择性的创建Bean操作:
自定义条件:
	1 定义条件类:自定义类实现Condition接口,重写matches方法,返回boolean值。matches两个参数:
		context:上下文对象,可获取属性值、类加载器、BeanFactory
		metadata:元数据对象,用于获取注解属性
	2 判断条件:在初始化Bean时,使用@Conditional(条件类.class)注解

SpringBoot常用条件注解:

ConditionalOnProperty:判断 配置文件 中是否有对应属性、值才初始化Bean ConditionalOnClass:判断环境中是否有对应字节码才初始化Bean ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean

6.1.2 切换内置web服务器

默认使用tomcat作为内置服务器,内置有四个web服务器工程

在这里插入图片描述 在pom.xml文件里,将tomcat依赖排除,加入jetty依赖即可进行切换 在这里插入图片描述

6.1.3 @Enable*注解原理

Enable开头的注解用于动态启动某些功能,底层原理是使用@Import注解导入一些配置类,实现Bean的动态加载。

@SpringBootApplication里的 @ComponentScan 扫描范围:当前引导类所在包及其子包 不能直接获取自定义注入对象

解决:

	1 使用@ComponentScan 扫描
	2 使用@Import注解,加载类,都被Spring创建并放入IOC容器
	3 对Import注解进行封装,即自定义一个注解,将2加入其中,再加入原有注解,如下:
@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
//以上为自定义注解必须要加的原有注解
@Import(UserConfig.class)
//自定义User bean的注解
public @interface EnableUser{

}
后续直接使用@EnableUser注解,就可使用User bean

6.1.4 @Import注解

用法:

	1 导入Bean
	2 导入配置类
	3 导入ImportSelector实现类,一般用于加载配置文件中的类
	4 导入ImportBeanDefinitionRegistrar实现类
1 导入Bean

在这里插入图片描述

2 导入配置类

在这里插入图片描述 通过Import方式,配置类上的@Configuration可忽略!!!! 在这里插入图片描述

3 导入 ImportSelector实现类
定义一个MyImportSelector类实现ImportSelector的selectImports方法,返回一个字符串数组。入口处直接Import这个自定义的MyImportSelector类即可。

在这里插入图片描述 在这里插入图片描述

4 导入ImportBeanDefinitionRegistrar实现类

在这里插入图片描述 在这里插入图片描述

可通过自定义Bean的名称来获取

6.1.5 @EnableAutoConfiguration注解

1 @EnableAutoConfiguration注解内部使用@Import(AutoConfigurationImportSelector.class)加载配置文件

2 配置文件位置:META-INF/spring.factories

3 在配置类中使用Condition加载满足条件的Bean

6.1.6 自定义starter

首先创建两个模块,一个autoconfigure用于写核心自动配置类,一个starter用于依赖的整合

在这里插入图片描述

在starter中引入configure的依赖
在configure中引入jedis的依赖

在这里插入图片描述

创建RedisAutoConfiguration配置类,提供Jedis的bean

在这里插入图片描述

通过创建RedisProperties类,进行动态配置主机名与端口号

在这里插入图片描述 在这里插入图片描述

创建META-INF目录下的spring.factories文件,编写键值对

在这里插入图片描述

6.2 事件监听

是对java提供的事件监听机制的封装

java事件监听角色:
	1 事件:Event,继承 java.util.EventObject类的对象
	2 事件源:Source,任意对象Object
	3 监听器:Listener,实现 java.util.EventListener接口的对象

SpringBoot项目启动时回调的监听器:

1 ApplicationContextInitializer
2 SpringApplicationRunListener
3 CommandLineRunner
4 ApplicationRunner

自定义类分别实现四个接口的方法,随后@Component将其注册到Spring容器中去 在这里插入图片描述 在启动SpringBoot项目后,显示如下: 在这里插入图片描述

此时仅仅只执行了了ApplicationRunner 与 CommandLineRunner 两个监听的run方法(放入IOC容器即可执行)

在这里插入图片描述 ApplicationContextInitializer 与 SpringApplicationRunListener 需要配置才可在启动时调用其方法。 在这里插入图片描述 在这里插入图片描述

6.3 SpringBoot监控

自带监控功能Actuator,如监控状况、Bean加载情况、配置属性、日志信息等

使用步骤:

	1 导入依赖坐标
	2 访问:http://localhost:8080/actuator
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>	

在这里插入图片描述

创建好后直接启动,访问上述网址,返回Json字符串

在这里插入图片描述

在配置文件中开启健康检查的完整信息

在这里插入图片描述 在这里插入图片描述

将所有监控endpoint暴露出来

在这里插入图片描述

SpringBoot Admin图形化界面使用

1 是一个开源社区项目,用于管理与监控SpringBoot应用程序
2 有两个角色,客户端(Client)和服务端(Server)
3 应用程序作为Client 向为Server注册
4 Admin UI界面将Client的Actuator Endpoint上的监控信息展示

使用步骤:

 admin-server:
 	1 创建admin-server模块
 	2 导入依赖坐标admin-starter-server
 	3 在引导类上启用监控功能@EnableAdminServer
 
 admin-client:
 	1 创建admin-client模块
 	2 导入依赖坐标admin-starter-client
 	3 配置相关信息:server地址等
 	4 启动server和client服务,访问server

在这里插入图片描述 在这里插入图片描述

先启动server再启动client,访问localhost:8081,显示如下:

在这里插入图片描述

6.4 项目部署

支持两种方式部署:
	1 jar包(官方推荐)
	2 war包

默认打包成jar包方式: 在这里插入图片描述 更改打包方式:

1 先在pom.xml文件里配置

在这里插入图片描述

2 更改入口类文件

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/2630.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!