前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot的@SpringBootApplication注解和其他几个注解

SpringBoot的@SpringBootApplication注解和其他几个注解

作者头像
allsmallpig
发布2021-02-25 14:47:36
5280
发布2021-02-25 14:47:36
举报
文章被收录于专栏:allsmallpi博客

转载自 https://blog.csdn.net/zzzgd_666/article/details/80310840

首先,我们来看看@SpringBootApplication注解代码,如下代码,它分别继承了3个注解

代码语言:javascript
复制
1、@EnableAutoConfiguration
2、@ComponentScan
3、@SpringBootConfiguration    
代码语言:javascript
复制
@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属性,这个包下的所有子包和子类都会被扫描。

下面是一个典型的结构:

代码语言:javascript
复制
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)。

当然我们也可能不需要他自动配置,这时候需要用排除的方式:

代码语言:javascript
复制
@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。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/08/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • main应用类的位置
  • @EnableAutoConfiguration
  • Spring Beans和依赖注入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档