@SpringBootApplication底层原理

@SpringBootApplication底层原理

1)SpringBoot重要特点:
  1. 约定大于配置

    1. maven 项目的配置文件存放在 resources 资源目录下。
      2. maven 项目默认编译后的文件放于 target 目录。
      3. maven 项目默认打包成 jar 格式。
      4. 配置文件默认为 application.yml 或者 application.yaml 或者 application.properties
      5. 默认通过配置文件 spring.profiles.active 来激活配置。
  2. 自动装配

    1. springboot的自动装配实际上就是为了从spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给spring容器来帮我们进行管理
2)@SpringBootApplication核心:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
		@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
    //omit..
}
  1. 由@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解叠加。

  2. @ComponentScan – 包扫描注解,这个注解的作用是在项目启动时去扫描 启动类同级及以下的包中的Bean

  3. @SpringBootConfiguration

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Configuration
    public @interface SpringBootConfiguration {
    
    }
    
    1. 完全是@Configuration注解,@Configuration是spring中的注解,表示该类是一个配置类,因此我们可以在启动类中做一些配置类可以做的事情,比如注入一个bean。
  4. @EnableAutoConfiguration 注解,开启自动配置

    @SuppressWarnings("deprecation")
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @AutoConfigurationPackage
    @Import(EnableAutoConfigurationImportSelector.class)
    public @interface EnableAutoConfiguration {
        //omit..
    }
    
    1. @Import注解,快速导入Bean到IOC容器中,一般有三种方式,这里用的是ImportSelector
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不脱顶的程序员小王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值