【问题标题】:Failing to import external jar containing bean无法导入包含 bean 的外部 jar
【发布时间】:2021-09-18 07:08:36
【问题描述】:

我对使用 Spring 有点陌生,所以提供的任何帮助都会很棒。

我有一个 SpringApplication 类(用@SpringBootApplication 注解。在另一个类中(在同一个项目中),它包含一个 ServiceClass 类。当该类在同一个项目中时,它按预期运行。

将 ServiceClass 移动到外部 jar 时,出现以下错误。

说明:

字段服务在 package-to-class.Comp 需要一个 'package-to-class.ServiceClass' 类型的 bean 找不到。

注入点有如下注解:

  • @org.springframework.beans.factory.annotation.Autowired(required=true)

行动:

考虑定义一个 bean 类型 'package-to-class.ServiceClass' 在你的 配置。

我正在尝试查找我需要做些什么来将 (@AutoWired) 注入到我的项目中并出现上述错误。

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    默认情况下,Spring Boot 的组件将only looks in the same package 扫描为@SpringBootApplication 及其后代。

    我建议的方法是使用@Import 从项目外部导入特定的bean,或者使用@ComponentScan 从另一个项目的包中导入所有bean。

    @SpringBootApplication
    @Import(ServiceClass.class)
    public class SpringApplication {
        // ...
    }
    

    @SpringBootApplication
    @ComponentScan(basePackages = "com.example.mylibrary")
    public class SpringApplication {
        // ...
    }
    

    【讨论】:

      【解决方案2】:

      好吧,一些基本的东西,你把你的包弄混了一点。

      @SpringBootApplication 将扫描包中的所有类,该类低于该类的注释。此注解是@EnableAutoConfiguration@Configuration@ComponentScan 的别名,表示@ComponentScan(basePackages = {"com.springdi.example"}, basePackageClasses = DependencyBasePackageClass.class)不需要

      com.springdi.example     // class with @SpringBootApplication annotation
               |
               |
               |
      com.springdi.example.*    // Will find all @Service, @Component, @Configuration
                                // in subpackages below the @SpringBootApplication 
                                // annotation
      

      你可以在这里SpringBootApplication阅读更多关于注解的信息

      由于您的其他带注释的类@SpringBootApplication 位于相同的包结构中,因此您需要定义要扫描注释的所有位置。

      @SpringBootApplication(scanBasePackages = {"com.springdi.example", "com.dependency.example"})
      

      可能会包含您要扫描的所有包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-19
        • 2013-12-07
        • 2011-02-24
        • 2013-07-12
        • 2011-09-07
        • 2011-09-18
        • 1970-01-01
        相关资源
        最近更新 更多