springboot中@SpringBootApplication注解的作用是什么
springboot中@SpringBootApplication注解的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为岳西企业提供专业的成都网站设计、成都网站建设、外贸网站建设,岳西网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
SpringBootApplication是springboot的基本注解,是写在springboot的启动类上的注解,目的是开启springboot的自动配置
@SpringBootApplication是一个组合注解,先把源码贴出来
package org.springframework.boot.autoconfigure; @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 { @AliasFor(annotation = EnableAutoConfiguration.class) Class>[] exclude() default {}; @AliasFor(annotation = EnableAutoConfiguration.class) String[] excludeName() default {}; @AliasFor(annotation = ComponentScan.class, attribute = "basePackages") String[] scanBasePackages() default {}; @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses") Class>[] scanBasePackageClasses() default {}; }
在这里可以看到这里有7个注解
其中@Target(ElementType.TYPE)、@Retention(RetentionPolicy.RUNTIME)、@Documented、@Inherited这四个注解是Java原生的,用来标注这个注解的用法的这里不再解释。
重点是@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解
来一个一个分析
@ComponentScan,看到这个注解很容易想到spring配置里的一个标签
看到这个标签可能就明白了就是扫描指定包的,同理@ComponentScans注解是可以配置多个需要扫描的包
@EnableAutoConfiguration这个注解也是很常见的,这个注解的意思就是开启自动配置
以上两个注解配合,扫描到了包,然后开始自动配置。这两个都是spring的注解,有spring功底的,应该理解起来不是问题
@SpringBootConfiguration不是spring原生的,但是点开源码就发现一个很神奇的事情
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration { }
这就是@SpringBootConfiguration这个注解的全部代码,他只是用了下@Configuration注解。
综上,springboot的启动类不用@SpringBootApplication,而是@Configuration、@EnableAutoConfiguration、@ComponentScan,同样能达到启动的目的。@SpringBootApplication的目的只是为了简化,让开发人员少写代码,实现相同的目标,这也算Java封装思想的提现。
关于springboot中@SpringBootApplication注解的作用是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
分享名称:springboot中@SpringBootApplication注解的作用是什么
网页URL:http://hbruida.cn/article/pdisoj.html