SpringBoot微服务框架
springboot
- 是什么?
- 配置如何编写 yaml
- 自动装配原理
- 集成Web开发
- 集成数据库Druid
- 分布式开发:Dubbo(RPC)+zookeeper
- swagger:接口文档
- 任务调度
- SpringSecurity : Shiro
自动装填原理
pom.xml
核心依赖在父工程中:<artifactId>spring-boot-dependencies</artifactId>
我们在写或者引入一下SpringBoot依赖的时候,不需要指定版本,就因为有这些版本仓库
启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
Springboot的启动环境
例如:spring-boot-starter-web,它就会帮我们自动导入web环境的所有依赖
Springboot会将所有的功能,都变成一个个的启动器
如果要是有什么功能,只需找到对应的启动器即可
spring-boot-starter:核心模块,包括自动配置支持、日志和YAML;
spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito;
@RestController的意思就是controller里面的方法都以json格式输出;
主程序
//@SpringBootApplication : 标注这个类是SpringBoot的应用
@SpringBootApplication
public class Springboot01Application {
public static void main(String[] args) {
// 将SpringBoot应用启动
SpringApplication.run(Springboot01Application.class, args);
}
}
注解
@SpringBootConfiguration:SpringBoot的配置
@Configuration:spring配置类
@Component:spring组件
@EnableAutoConfiguration:自动配置
@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class):自动配置'包注册'
@Import(AutoConfigurationImportSelector.class):自动配置选择器
获取所有的配置
List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
配置候选的配置
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
getBeanClassLoader());
Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you "
+ "are using a custom packaging, make sure that file is correct.");
return configurations;
}
META-INF/spring.factories自动配置的核心文件

结论:springboot所有的自动配置都是在启动的时候扫描并加载spring.factories所有的自动配置类都在这个里面,但是不一定生效要判断条件是否成立,只要导入了对应的start就有对应的启动器,有了启动器,自动装配就会生效,然后配置成功
步骤:
1.springboot在启动的时候,从类路径下/META-INF/spring.factories获取指定的值
2.将这些自动导入配置的类导入容器,自动配置就会生效,帮我进行自动配置
3.一起我们需要自动配置的东西,现在springboot帮我们做了
4.整合JavaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-2.3.5.RELEASE.jar这个包下面
5.它会把所有需要导入的组件,以类名的方式返回,这些组件就会添加到容器;
6.容器中也会存在非常多的xxxAutoConfiguration的文件(@Bean),就是这些类给容器中导入了这个场景需要的所有组件
SpringBoot微服务框架的更多相关文章
- 基于spring-boot的rest微服务框架
周末在家研究spring-boot,参考github上的一些开源项目,整了一个rest微服务框架,取之于民,用之于民,在github上开源了,地址如下: https://github.com/yjmy ...
- 十分钟搭建微服务框架(SpringBoot +Dubbo+Docker+Jenkins源码)
本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程 ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- Spring-boot:快速搭建微服务框架
前言: Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包,并 ...
- 基于thrift的微服务框架
前一阵开源过一个基于spring-boot的rest微服务框架,今天再来一篇基于thrift的微服务加框,thrift是啥就不多了,大家自行百度或参考我之前介绍thrift的文章, thrift不仅支 ...
- 微服务框架——SpringCloud
1.SpringCloud微服务框架 a.概念:SpringCloud是基于SpringBoot的微服务框架 b.五大神兽:Eureka(服务发现).Ribbon(客服端负载均衡).Hystrix(断 ...
- SpringBoot微服务架构下的MVC模型总结
SpringBoot微服务架构下的MVC模型产生的原因: 微服务概念改变着软件开发领域,传统的开源框架结构开发,由于其繁琐的配置流程 , 复杂的设置行为,为项目的开发增加了繁重的工作量,微服务致力于解 ...
- 【微服务】使用spring cloud搭建微服务框架,整理学习资料
写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...
- 基于Openshift的SpringBoot微服务
基于Openshift的SpringBoot微服务 OpenShift是红帽的云开发平台即服务(PaaS).自由和开放源码的云计算平台使开发人员能够创建.测试和运行他们的应用程序,并且可以把它们部署到 ...
随机推荐
- LCA树上倍增求法
1.LCA LCA就是最近公共祖先(Least common ancestor),x,y的LCA记为z=LCA(x,y),满足z是x,y的公共祖先中深度最大的那一个(即离他们最近的那一个)qwq 2. ...
- jmeter 相关
Don't use GUI mode for load testing !, only for Test creation and Test debugging. For load testing, ...
- C/C++编程日记:用C语言实现的简单Web服务器(Linux),全代码分享!
相信大家对Apache都有所听闻,Apache是目前使用最为广泛我Web服务器.大家可以从news.netcraft.com/这个网站得到证实. 这是腾讯的uptime.netcraft.com/up ...
- spring boot:使mybatis访问多个druid数据源(spring boot 2.3.2)
一,为什么要使用多个数据源? 1,什么情况下需要使用多个数据源? 当我们需要访问不同的数据库时,则需要配置配置多个数据源, 例如:电商的业务数据库(包括用户/商品/订单等) 和统 ...
- Linux用户和组管理命令-用户属性修改usermod
用户属性修改 usermod 命令可以修改用户属性 格式: usermod [OPTION] login 常见选项: -u UID: 新UID -g GID: 新主组 -G GROUP1[,GROUP ...
- java中true不是关键字?
java中true ,false , null在java中不是关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符. 其中const和goto是java的保留字.java中所 ...
- 没事学学KVM(五)虚拟机基础管理
1.今天学习一下KVM的开机自启功能.开机启动,即随宿主机启动而启动 virsh autostart vm-name 开机自启的前提是libvirt功能也是开机启动的:systemctl enable ...
- day04 Selenium请求库
1.什么是Selenium? Selenium是一个自动测试工具,它可以帮我通过代码去实现驱动浏览器自动执行相应的操作. 所以我们也可以用它来做爬虫. 2.为什么要适用s ...
- redis client原理分析
代码库地址:https://github.com/garyburd/redigo 1:连接池 2:发送命令 3:解析结果 1:连接池 连接池结构体如下: type Pool struct { // D ...
- 小白:String函数总结
string.h函数: 1.strlen 数出字符串存在多少字符: 2.strcmp 比较两个字符串,若相等返回0不相等返回1 3.strcpy(char *restrict dst,const ch ...