SpringBoot的@SpringBootApplication注解和其他几个注解
转载自 https://blog.csdn.net/zzzgd_666/article/details/80310840
首先,我们来看看@SpringBootApplication注解代码,如下代码,它分别继承了3个注解
1、@EnableAutoConfiguration
2、@ComponentScan
3、@SpringBootConfiguration
@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 {
//.....
}
所以它同时具备了@ComponentScan、@EnableAutoConfiguration的功能。
很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。 由于这些注解被如此频繁地一块使用(特别是你遵循以上最佳实践时) , Spring Boot提供一个方便的 @SpringBootApplication 选择。该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。
main应用类的位置
一般来说, main应用类应该放在其他类上面的根包(root package) 中,此时@ComonentScan注解不需要配置basePackage
属性,这个包下的所有子包和子类都会被扫描。
下面是一个典型的结构:
cn+- zgd+- project+- Application.java|+- domain| +- Customer.java| +- CustomerRepository.java|+- service| +- CustomerService.java|+- web+- CustomerController.java
- 1
@EnableAutoConfiguration
这个注解是Spring应用程序上下文的自动配置,尝试猜测和配置您可能需要的bean。自动配置类通常基于类路径和定义的bean应用。例如,如果你有 tomcat-embedded.jar在您的类路径中,你可能会想要一个TomcatEmbeddedServletContainerFactory(除非你定义自己的EmbeddedServletContainerFactory bean)。
当然我们也可能不需要他自动配置,这时候需要用排除的方式:
@Configuration
//exclude= {DataSourceAutoConfiguration.class} 通过排除属性来禁止DataSourceAutoConfiguration的配置
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
@ComponentScan
public class Application {
.....
Spring Beans和依赖注入
你可以自由地使用任何标准的Spring框架技术去定义beans和它们注入的依赖。 这里经常使用 @ComponentScan 注解搜索beans, 并结合 @Autowired 构造器注入。
如果使用上面建议的结构组织代码(将应用类放到根包下) , 你可以添加 @ComponentScan 注解而不需要任何参数。 你的所有应用程序组件(@Component , @Service , @Repository , @Controller 等) 将被自动注册为Spring Beans。
SpringBoot的@SpringBootApplication注解和其他几个注解相关推荐
- springboot解决跨域CROS问题,用注解@CrossOrigin
项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...
- 注解开发不方便_注解(上)
注解,和反射一样,是Java中最重要却最容易被人遗忘的知识点.哪怕Spring.SpringMVC.SpringBoot等框架中充满了注解,我们还是选择性地忽视它.很多人不明白它是怎么起作用的,甚至有 ...
- @controlleradvice注解作用_springboot的常用注解分析
在spring boot中,摒弃了spring以往项目中大量繁琐的配置,遵循约定大于配置的原则,通过自身默认配置,极大的降低了项目搭建的复杂度.同样在spring boot中,大量注解的使用,使得代码 ...
- spring boot注解_Spring-boot(二)注解
首先从启动处注解: @SpringBootApplication 查看源码可知为复合注解: SpringBootConfiguration:这个是spring-boot定义的注解 @Target({E ...
- (十一)Spring 基础注解(对象创建相关注解、注入相关注解)
注解编程 目录 注解基础概念 注解的作用 Spring 注解的发展历程 Spring 基础注解(Spring 2.x) 对象创建相关注解 @Component @Repository.@Service ...
- @qualifier注解_常见的 Spring 注解概览
点击上方 Java后端,选择 设为星标 优质文章,及时送达 从Java5.0开始,Java开始支持注解.Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解.相比起之前使用xml来配 ...
- 【Spring 基础注解】对象创建相关注解、注入相关注解、注解扫描详解
Spring 基础注解(2.x) 注解基础概念 注解的作用 Spring 注解的发展历程 对象创建相关注解 @Component @Repository.@Service.@Contoller @Sc ...
- java 注解开发_Java中的注解到底是如何工作的?
作者:人晓 www.importnew.com/10294.html 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Over ...
- 注解提高篇:自定义注解处理器(APT)
## 0x01 继承AbstractProcessor抽象类 当定义好Annotation注解后,接下来就需要一个注解处理器来处理我们的自定义注解了.实现Java Annotation一般需要继承Ab ...
- java 解析注解_Java知识点总结(注解-解析注解)
Java知识点总结(注解-解析注解) @(Java知识点总结)[Java, 注解] 通过反射获取类.函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑. 使用注解步骤: 定义注解 类中使用注 ...
最新文章
- x86终端登录horizon view设置
- 换了你你又会杀了谁(zz)
- mysql batch insert 遇到错误跳过_这是MySQL的bug吗?
- 最早做无糖茶的统一茶里王,是怎样错过年轻人的?
- 计算机一级单元格公式设置错误是什么原因,excel表格公式出错怎么解决,电子表格求和出错...
- 编辑器Sublime Text 2
- java ee maven_真正释放Maven和Java EE的强大功能
- 2018全国计算机音乐大赛一等奖,2018全国数字音乐大赛总决赛精彩无限!小学员的技能震惊评委!...
- 同事删库跑路后,我连表名都不能修改了?
- ncurses输入函数:字符+字符串的输入
- [vscode] python debugging
- python类型检查_python【数据类型检查】
- 华数机器人编程语言_招新 | 海大最「酷」的科创团队,确定不来了解一下吗?...
- Mysql 数据库中Where 关键字的使用
- linux 软件安装命令
- Ctrix-XenApp中误删应用服务器,如何重新添加
- .NET BackgroundWorker
- 与班尼特·胡迪一起攻破浮空城 (HZNU-2264)
- 盘点2016年人工智能与深度学习领域的十大收购
- 【民生】2011,骗子仍在行动