IOC
与AOP
,IOC
提供依赖注入的容器,AOP
解决面向切面的编程,在二者基础上实现其他的功能DispatcherServlet
,ModelAndView
等简单的概念,简化Web应用的开发META-INF/spring.factories
中获取EnableAutoConfiguration
的指定值springboot-autoconfigure
的jar包中SpringBoot的自动配置是基于Spring Factories机制实现的。Spring Factories机制是SpringBoot中的一种服务发现机制,SpringBoot会自动扫描所有jar包路径下的META-INF/spring.factories
文件,并读取其中的内容进行实例化,这也是SpringBoot Starter的基础
注解@EnableAutoConfiguration
,@Configuration
,@ConditionalOnClass
就是自动配置的核心。其中@EnableAutoConfiguration
给容器导入META-INF/spring.factories
里定义的自动配置类,每一个自动配置类结合对应的xxxProperties.java
读取配置文件进行自动配置
核心注解为@SpringBootApplication
,其由三个注解组成:
@SpringBootConfiguration
:组合了@configuration
注解,实现了配置文件的功能@EnableAutoConfiguration
:打开自动配置功能@ComponentScan
:进行组件扫描二者都是SpringB的核心配置文件,其中:
SpringCloud Config
或者是nacos
,同时bootstrap中的属性不可被覆盖@value
注解@ConfigurationProperties
注解将值绑定到一个对象Environment
进行获取SpringCloud是一系列框架的有序集合,它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务注册与发现、配置中心、消息总线、负载均衡、断路器、数据监控等
单体架构的项目随业务的发展会越来越复杂,可能会出现代码结构混乱、开发效率低、排查解决问题成本高等问题,因而近年来微服务架构逐步取代了单体架构,而SpringCloud是目前最常用的微服务开发框架,已经在企业级开发中有了大量的应用
@EnableFeignClients
注解开启对FeignClient
扫描加载处理。根据FeignClient
开发规范,定义接口并添加@FeignClientd
注解@FeignClients
注解的类,并将信息注入到Spring IOC
容器中,当定义的Feign
接口中的方法被调用时,通过JDK
的代理方式生成具体的RequestTemplate
RequestTemplate
对象,该对象封装HTTP请求需要的全部信息RequestTemplate
生成Request,然后将Request交给Client处理,最后Client被封装到LoadBalanceClient
类,该类结合Ribbon负载均衡发起服务之间的调用雪崩效应指的是大型互联网项目中,当某个服务发生宕机时,调用这个服务的其他服务也会发生宕机,大型项目的微服务之间的调用是互通的,这样就会将服务的不可用逐步扩大到各个其他服务中,从而使整个项目的服务宕机崩溃