SpringCloud之@SpringBootApplication
2019-08-16 09:38:58来源:博客园 阅读 ()
SpringCloud之@SpringBootApplication
-
Target(ElementType.TYPE)
它的作用就是:指示注释类型适用的上下文,指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里,它里面有一个ElementType类,内部有8个值。
-
TYPE:类,接口或者枚举
-
FIELD:域,包含枚举常量
-
METHOD:方法
-
PARAMETER:参数
-
CONSTRUCTOR:构造方法
-
LOCAL_VARIABLE:局部变量
-
ANNOTATION_TYPE:注解类型
-
PACKAGE:包
-
-
@Documented
它的意思就是表示默认情况下,该注解该由javadoc工具记录,默认情况下javadoc是不包括注解的,但如果声明注解时指定了@Documented,它会被javadoc之类的工具处理,所以注解类型信息也会被包括在生成的文档中,只负责标记,没有成员取值。
-
@Retention(RetentionPolicy.RUNTIME)
它的意思是指你要保留地注解的生命周期,会保留到哪个阶段,它的参数RetentionPolicy是一个类,内部定义了三个参数:1. SOURCE 2. CLASS 3. RUNTIME ,他们三个的作用就是配合@Retention来定义保留的时间。
3.1 SOURCE:源码级别保留,编译后即丢弃
3.2 CLASS:变异级别保留,变异后的class文件中存在,在jvm运行时丢弃,这是默认值。
3.3 RUNTIME:运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。
-
@Inherited
简单来说:它是一个标记注解,某个子类使用了它,就能通过它来获取到父类的注解。
这是它的中文文档:
指示注释类型被自动继承。如果在注释类型声明中存在 Inherited 元注释,并且用户在某一类声明中查询该注释类型,同时该类声明中没有此类型的注释,则将在该类的超类中自动查询该注释类型。此过程会重复进行,直到找到此类型的注释或到达了该类层次结构的顶层 (Object) 为止。如果没有超类具有该类型的注释,则查询将指示当前类没有这样的注释。
注意,如果使用注释类型注释类以外的任何事物,此元注释类型都是无效的。还要注意,此元注释仅促成从超类继承注释;对已实现接口的注释无效。
-
@SpringBootConfiguration
该注解它的里面有一个@Configuration,他的作用就是用来声明当前类是个配置类,可以通过@Bean注解生成IOC容器管理的Bean。
而他的文档意思就是:
@SpringBootConfiguration来替代@Configuration,以便可以自动找到配置
-
@EnableAutoConfiguration
它的里面有两个注解分别是:
@AutoConfigurationPackage 和 Import(AutoConfigurationImportSelector.class)
@AutoConfigurationPackage
的中文文档是:指示应注册包含带注释的类的包。@Import(AutoConfigurationPackages.Registrar.class)
的文档意思是:表示要导入的一个或多个@Configuration类。
@EnableAutoConfiguration
是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中.@EnableAutoConfiguration
源码通过@Import
注入了一个ImportSelector
的实现类 -
@ComponentScan
它在文档中是这样的:
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM,
classes = AutoConfigurationExcludeFilter.class) })其中excludeFilters()这个方法作用就是:指定哪些类型不符合组件扫描的条件。
@Filter注解作用为类型过滤器。
所以除去过滤掉的类型外,其他所有的类型都会被扫描到.
懂Spring的都知道Spring的四大注解:@Service
,
@Repository,
@Component,
@Controller用来定义一个Bean,而
@ComponentScan
basePackages,includeFilters,excludeFilters属性来动态确定自动扫描范围,类型已经不扫描的类型.默认情况下:它扫描所有类型,并且扫描范围是@ComponentScan注解所在配置类包及子包的类
总结:
通过上面可以得出springboot是通过注解@EnableAutoConfiguration
的方式,去查找,过滤,加载所需的configuration
,@ComponentScan
扫描我们自定义的bean,@SpringBootConfiguration
使得被@SpringBootApplication
注解的类声明为注解类.因此@SpringBootApplication
的作用等价于同时组合使用@EnableAutoConfiguration
,@ComponentScan
,@SpringBootConfiguration
.
若是有什么不对的地方欢迎各位大佬指出来︿( ̄︶ ̄)︿。
参考链接:
https://www.jianshu.com/p/39ee4f98575c
https://latty.iteye.com/blog/2371766
https://www.cnblogs.com/hzhuxin/p/7799899.html
原文链接:https://www.cnblogs.com/zhameng/p/11122041.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 为什么要用springcloud? 2020-06-02
- SpringCloud Alibaba 简介 2020-05-26
- SpringCloud异常处理统一封装我来做-使用篇 2020-05-23
- springcloud~服务发现之k8s服务 2020-05-20
- SpringCloud Config 分布式配置管理 2020-05-02
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash