【问题标题】:@SpringbootApplication does not scan components in default package@SpringbootApplication 不扫描默认包中的组件
【发布时间】:2018-11-02 18:11:16
【问题描述】:

嗨,我在包 com 中有我的主类 spring boot 应用程序 以及在 com.bbh.fx.pack1 中定义的另外两个 bean。

据我了解,SpringBootApplication 将自动扫描其 pakacge 和 childern 包中的所有组件。但它不是扫描。不知道我错过了什么

    **package com.bbh.fx.pack1;**

    import org.springframework.stereotype.Component;

    import javax.annotation.PostConstruct;

    @Component
    public class BeanA {

        @PostConstruct
        public void init() {
            System.out.println("in BEANA");

        }
    }

   **package com;**

    @SpringBootApplication
    public class MainApp{
        public static void main(String[] args) {
          SpringApplication.run(MainApp.class, args);
       }
    }

【问题讨论】:

  • SpringApplication.run(MainApp.class, args) in main 方法
  • 假设您在 MainApp 中没有 main 方法(请参阅 @Georgy Gobozov 他的评论)...我想知道您是如何测试或启动您的应用程序的吗?

标签: spring spring-boot


【解决方案1】:

您的 MainApp 中没有 main,您的代码应如下所示:

@SpringBootApplication
public class MainApp{

   public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
   }
}

我通常喜欢从https://start.spring.io/ 启动所有新应用程序,您可以选择项目名称、构建类型(maven 或 gradle)并选择您希望包含在应用程序中的任何 spring 依赖项。

【讨论】:

  • 我将 main 添加到 MainApp,它仍然不能自动检测 BeanA
  • 你能添加你的 pom/gradle 构建吗?您是否缺少任何依赖项?
【解决方案2】:

使用@ComponentScan 扫描组件。

@SpringBootApplication
@ComponentScan("com")
public class MainApp{

   public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2021-08-24
    • 2022-01-02
    • 2016-12-30
    • 2014-10-11
    • 1970-01-01
    相关资源
    最近更新 更多