温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot中@SpringBootApplication注解的作用是什么

发布时间:2021-07-30 14:22:08 来源:亿速云 阅读:805 作者:Leah 栏目:大数据

springboot中@SpringBootApplication注解的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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配置里的一个标签

<context:component-scan base-package=""/>

看到这个标签可能就明白了就是扫描指定包的,同理@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注解的作用是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI