SpringBoot注解

SpringBoot

@SpringBootApplication

@SpringBootApplication注解的类,就是Spring Boot应用程序的启动类。这个启动类中包含main方法。

SpringBoot通过过SpringBootApplication这个类的SpringApplication.run()方法来加载这个类,运行Spring Boot应用。

run方法做了两件事:

创建SpringApplication对象;在对象初始化时保存事件监听器,容器初始化类以及判断是否为web应用,保存包含main方法的主配置类。
调用run方法;准备spring的上下文,完成容器的初始化,创建,加载等。会在不同的时机触发监听器 的不同事件。

@SpringBootApplication 注解就是Spring Boot的核心注解。

几乎所有的Spring Boot应用,都是用@SpringBootApplication这个注解标注的。

通过阅读@SpringBootApplication的源码,发现其由3个注解构成:

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
如果我们将@SpringBootApplication注解替换为上面3个注解,效果一样。

@ComponentScan

@ComponentScan这个注解在Spring中很重要,它的功能其实就是自动扫描并加载符合条件的组件(比如 @Component @Controller@RestController@Service和@Repository)或者bean定义,最终将 这些bean定义加载到Spring loC容器中。

我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定(通 常情况下,我们都不会指定basePackages),则默认Spring框架实现会从声明@componentscan所在类的 package进行扫描。这也就是为什么我们一般都是将启动类放到应用的“根包”中,然后在其下再放置各个 模块/功能的包。

@componentscan告诉Spring哪个packages的用注解标识的类会被spring自动扫描并且装入bean容器。

例如,如果你有个类用@Controlle性解标识了,那么,如果不加上匹@componentscan自动扫描该 controller,那么该Controller就不会被Spring扫描到,也就不会装入Spring容器(IOC)中,因此你配置的 这个Controller也没有意义。

下面列出@ComponentScan注解的参数,说明其作用:

basePackageClasses:对basepackages()指定扫描注释组件包类型安全的替代。

excludeFilters:指定不适合组件扫描的类型。

includeFilters:指定哪些类型有资格用于组件扫描。

lazylnit:指定是否应注册扫描的beans为lazy初始化。

nameGenerator:用于在Spring容器中的检测到的组件命名。

resourcepattern:控制可用于组件检测的类文件。

scopedProxy:指出代理是否应该对检测元件产生,在使用过程中会在代理风格时尚的范围是必要的。 scopeResolver:用于解决检测到的组件的范围。

useDefaultFilters:指示是否自动检测类的注释

@EnableAutoConfiguration

@EnableAutoConfiguration简单概括一下就是,借助@lmport的支持,收集和注册特定场景相关的bean 定义。
@Import(AutoConfigurationImportSelector.class),借助AutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IOC容器,借助@lmport的帮助,将所有符合自动配置条件的bean定义加载到IOC容器中来。

@SpringBootConfiguration

@SpringBootConfiguration继承自©Configuration,二者功能也一致,标注当前类是配置类,并会将当前 类内声明的一个或多个以@Bean注解标记的方法的实例纳入到Spring容器中,并且实例名就是方法名。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值