springBoot原理解析

springboot的诞生是为了简化spring应用的初始搭建以及开发功能,该框架使用特定的方式进行配置,从而大大节省了开发人员的配置工作。但是springboot这种免配置的特性是如何实现的?这在面试经常问到,遇到了不少次,挨了不少枪子,所以定下心来撸撸这一块。。。。。开始

一个springBoot项目,大家都知道必须存在一个启动类,这个启动类是所有一切的开始

先看一下@SpringBootApplication这个注解

由上图可知@SpringbootApplication的功能是@Configu'ration,@EnableAutoConfiguration.@ComponentScan三个注解的合体

@Configuration

标注在类上,表明该类作为spring的xml配置文件中的<beans>,配置spring容器上下文ApplicationContext。

@Beab注解标注在方法上,注册对象返回某个实例。相当于xml配置文件中一个个<bean>

1、@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,默认与方法名一致、

2、@Bean注解默认作用域为单例singleton作用于,可以通过@Scope("prototype")设置作用域

扫描二维码关注公众号,回复: 6080557 查看本文章

3、@Bean的作用是注册对象,那么完全可以使用@Component,@Controller,@Service,@Repository等注解注册bean

@ComponentScan

这个注解在spring中很重要,它的功能其实就是自动扫描并加载符合条件的组件(比如@Component,@Bean)最终将这些bean定义加载到IOC容器中

我们可以通过basePackages等属性来细粒度的定制其扫描范围,如果不制定则默从声明了@ComponentScan所在类的package(包)下进行扫描。所以一般启动类最好放在根目录下

@EnableAutoConfiguration

springboot框架神奇之处便是在于该注解,可以自动载入应用程序所需的所有bean,这依赖于springboot在类路径中查找

@AutoConfigurationPackage:自动配置包

@Import:导入自动配置的组件

@EnableAutoConfiguration自动配置简单的来说是从classpath中搜寻所有的META-INF/spring.factories配置文件,并将其中的对应的配置项通过反射实例化为对应的标注@Configuration的形式容器配置类,然后汇总为一个并加载到IOC容器

猜你喜欢

转载自blog.csdn.net/weixin_42558742/article/details/88119546