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")设置作用域

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容器

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值