(原创不易,你们对阿超的赞就是阿超持续更新的动力!)
(以免丢失,建议收藏)
Spring Boot自动装配
含义:
SpringBoot的核心就是自动配置,自动配置又是基于条件判断来配置Bean
主要关注的几个注解如下:
@SpringBootConfiguration:标记当前类为配置类
@EnableAutoConfiguration:开启自动配置
@ComponentScan:扫描主类所在的同级包以及下级包里的Bean
关键是@EnableAutoConfiguration
最关键的要属@Import(EnableAutoConfigurationImportSelector.class),
借助EnableAutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器:
通过@Import(AutoConfigurationImportSelector.class)导入的配置功能,
AutoConfigurationImportSelector中的方法getCandidateConfigurations,得到待配置的class的类名集合,这个集合就是所有需要进行自动配置的类,而是是否配置的关键在于META-INF/spring.factories文件中是否存在该配置信息
Spring Boot常用注解
@SpringBootApplication(复合注解):
@SpringBootConfiguration:标记当前类为配置类,主要用于加载配置文件
@EnableAutoConfiguration:自动配置的注解
@ComponentScan:主要用于组件扫描和自动装配(扫描主类所在的同级包以及下级包里的Bean)
@RestController:使用的效果是将方法返回的对象直接在浏览器上展示成json格式,用于标注控制层组件(包含@Controller和@ResponseBody);
@Configuration:主要用于加载配置文件,指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上;
@Bean:相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理;
@Autowired:自动注入,默认按类型装配;
@PathVariable:路径变量注解,获取参数;
@ImportResource:将资源导入容器;
@PropertySource:导入properties文件;
@MapperScan:Spring Boot支持mybatis组件的一个注解,通过此注解指定mybatis接口类的路径,即可完成对mybatis接口的扫描
Spring Boot需要独立容器进行运行吗
Spring Boot不需要独立的容器就可以运行,因为在Spring Boot工程发布的jar文件里已经包含了tomcat的jar文件。Spring Boot运行的时候,会创建tomcat对象,实现web服务功能。也可以将Spring Boot发布成war文件,放到tomcat里运行。
Spring Boot和Spring Cloud
SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务。
而SpringCloud专注于解决各个微服务之间的协调与配置,服务之间的通信、熔断、负载均衡等
技术维度并相同,并且SpringCloud是依赖于SpringBoot的,而SpringBoot并不是依赖与SpringCloud,甚至还可以和Dubbo进行优秀的整合开发
总结:
SpringBoot专注于快速方便的开发单个个体的微服务
SpringCloud是关注全局的微服务协调整理治理框架,整合并管理各个微服务,为各个微服务之间提供配置管理、服务发现、断路器、路由、事件总线等集成服务
SpringBoot不依赖于SpringCloud,SpringCloud依赖于SpringBoot,属于依赖关系
SpringBoot专注于快速,方便的开发单个的微服务个体,SpringCloud关注全局的服务治理框架