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的代理方式生成具体的RequestTemplateRequestTemplate对象,该对象封装HTTP请求需要的全部信息RequestTemplate生成Request,然后将Request交给Client处理,最后Client被封装到LoadBalanceClient类,该类结合Ribbon负载均衡发起服务之间的调用雪崩效应指的是大型互联网项目中,当某个服务发生宕机时,调用这个服务的其他服务也会发生宕机,大型项目的微服务之间的调用是互通的,这样就会将服务的不可用逐步扩大到各个其他服务中,从而使整个项目的服务宕机崩溃