Spring Boot 学习笔记(三)——启动原理

核心注解:@SpringBootApplication

实际主要等价于以下三个注解:
@Configuration
@ComponentScan
@EnableAutoConfiguration

@Configuration

本质是Ioc容器的配置类?我大概知道Ioc是个啥,但是非要我用三两句话来解释Ioc还是很勉强。反正就是把各个Bean装进去,但是我对Bean的理解也仅限于pojo…
总之:==任何标注了@Configuration的java类都是一个JavaConfig配置类。==其实我不是很懂这句话啥意思。
1、任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IoC容器,方法名将默认成该bean定义的id。

@Configuration
public class MockConfiguration{
    @Bean
    public MockService mockService(){
        return new MockServiceImpl();
    }
}

我不想管xml文件中Bean和Bean之间的依赖怎么搞的了,总之注解形式中是下面这样的:

@Configuration
public class MockConfiguration{
    @Bean
    public MockService mockService(){
        return new MockServiceImpl(dependencyService());
    }
    
    @Bean
    public DependencyService dependencyService(){
        return new DependencyServiceImpl();
    }
}

在方法前面加注@Bean注解,表示要将该方法返回的对象加载到Spring容器中

@ComponentScan

组件扫描功能:将使用特定注解标注的类(比如@Component,@Repository等,或者bean定义)统一扫描加载到Spring容器,这一功能就是依靠@ComponentScan注解来实现的,可以为其指定位置参数来指定要扫描的包。
如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描。所以SpringBoot的启动类最好是放在root package下,因为默认不指定basePackages。

@EnableAutoConfiguration

据说是最重要的注解??
跟@Enable开头的Annotation定义差不多,比如@EnableScheduling、@EnableCaching、@EnableMBeanExport等都是:
借助@Import的支持,收集和注册特定场景相关的bean定义。
看不懂,?。
而@EnableAutoConfiguration也是借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器。
@EnableAutoConfiguration自动配置就是:从classpath中搜寻所有的META-INF/spring.factories配置文件,并将其中org.springframework.boot.autoconfigure.EnableutoConfiguration对应的配置项通过反射(Java Refletion)实例化为对应的标注了@Configuration的JavaConfig形式的IoC容器配置类,然后汇总为一个并加载到IoC容器。这些配置类最后都会加载到已经准备完毕的ApplicationContext中,自动配置过程中SpringFactoriesLoader功不可没,然后具体配置项都在这里:SpringBoot的autoconfigure依赖包中的META-INF/spring.factories配置文件。
在念经吗这是??。
总之,启动流程如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值