栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot学习

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文件中引入一些依赖

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
    

    
        

        
            org.springframework.boot
            spring-boot-starter-web

        
    

引导类编写,以后直接运行该类的mian方法就可启动SpringBoot项目

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

1 首先创建新工程的操作下图:




2 打开项目后,自动编写好了Application类,即项目的入口,可直接启动项目


3 直接在里面写Controller类即可

4 SpringBoot配置 4.1 配置文件分类

SpringBoot是基于约定的,如想使用自己的配置替换默认配置,可使用application.properties 或 application.yml(application.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文件里加入依赖即可解决


            org.springframework.boot
            spring-boot-configuration-processor
            true
        
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

	org.springframework.boot
	spring-boot-starter-actuator
	

创建好后直接启动,访问上述网址,返回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 更改入口类文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446177.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号