SpringBoot自动装配原理(SpringBootApplication注解)

        SpringBoot使用时会发现,很多之前SpringMVC的配置都不需要配置我们可以直接拿来使用了,所有的配置一个都没配,甚至tomcat的端口都没有。这些配置都去哪儿了呢?为什么什么都不配就可以使用呢?

其魔力所在就在SpringBoot的启动类上。启动类中一共有两个东西,一个SpringBootApplication注解,一个run方法。

 

先看SpringBootApplication:

点进去除了元注解的东西外,有三个特殊的注解,一个SpringBootConfiguration。

         在SpringBootConfiguration中,只有一个configuration注解,也就是说这个注解其实就是一个配置注解。表明当前类提供了Springboot的配置,作用和configuration是一样的,只不过SpringBootConfiguration的意思说明它是一个SpringBoot的配置。

        同样,因为里面包含了configuration注解,启动类也可以看作是一个配置类,也可以在启动类中 直接用bean注解了。

        

第二个注解是EnableAutoConfiguration

源码:启用自动配置,猜测你可能会如何去配置。

如何去猜?

举个例子:比如添加了tomcat的jar包,就证明你可能要添加tomcat的配置。就是说引入什么依赖,他就认为你想要玩什么。同样,如果引了mybatis,就会自动配mybatis。会监测classpath的依赖。

 第三个注解:ComponentScan。翻译:组件扫描。如果SpringBoot的启动类不写在包里面,则在启动时会报错:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package错误。就是因为这个注解默认指扫描当前启动类所在的包里的对象。

 在以前SpringMVC配置文件中,都需要配一个controller自动扫描包。

 但是SpringBoot不但不用配置,并且路径已经被映射进来了。这个注解就是用来配置组件扫描命令的。

 意思就是使用这个注解代替xml中的扫描标签,通过注解中的属性来指定要扫描的包,从声明这个注解所在的类开始扫描。

总结:SpringBootApplication一共做三件事儿:

1.声明是个配置类

2.开启自动配置

3.扫描包。

以前配扫描包SpringMVC需要配,后来还要配Spring。这种配法本身就存在问题,是扫两个,有重复。SpringMVC扫web包,这些包是加入到SpringMVC的容器里面了。Spring扫所有IOC下的包。即便是他两各扫各的,也会出现各种莫名其妙的问题,不好解决。SpringBoot统一用一个容器来扫。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值