Spring Boot常见面试题总结
- (原创不易,你们对阿超的赞就是阿超持续更新的动力!)
- (以免丢失,建议收藏)
- (------------------------------------------------------------------------)
- Spring Boot自动装配
- Spring Boot常用注解
- Spring Boot需要独立容器进行运行吗
- Spring Boot和Spring Cloud
(原创不易,你们对阿超的赞就是阿超持续更新的动力!)
(以免丢失,建议收藏)
(------------------------------------------------------------------------)
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关注全局的服务治理框架