当前位置: 首页 > 知识库问答 >
问题:

让Spring Boot加载在运行时依赖项中定义的带注释的资源

伊温书
2023-03-14

我正在开发一组Java/Sprint引导Web服务,这些服务都将有几个相同的(理想情况下是可重用的)基于Spring的资源:

  • 许多基于注释的Spring Security配置
  • 多个服务和组件
  • 许多基于注释的事件处理程序
  • 基于注释的异常处理程序
    • 扩展ResponseEntityExceptionHandler的ControllerAdvice

    理想情况下,我可以将它们放在一个库(共享JAR文件)中,并在不同的webservice项目中重用它们。然而,我不相信Spring Boot会扫描库的整个依赖关系图,并根据它们的注释加载它们。

    有人知道有什么方法可以鼓励Spring Boot这样做吗?例如,如果我将以下类打包到一个可重用/可共享的库JAR中:

    @ControllerAdvice
    @Slf4j
    public class ApiExceptionHandler extends ResponseEntityExceptionHandler implements ApiContractConstants {
        // ... common exception handling code to be used by
        // all services
    }
    

    然后将其作为运行时依赖项拉入Spring Boot webservice(通过Maven/Gradle),如何让Spring Boot为我扫描、查找和加载该异常处理程序

共有1个答案

施俊驰
2023-03-14

描述让我想起了@SpringBootApplication。@SpringBootApplication的属性scanBasePackages定义了要扫描带注释组件的基本包。

@SpringBootApplication(scanBasePackages = {"org.example"})
 类似资料:
  • null 0.0.1-快照 _remote.repositories Maven-metadata-local org-utility-0.0.1-snapshot.jar org-utility-0.0.1-snapshot.pom org-utility-0.0.1-snapshot-jar-with-dependencies.jar 因此,我能够将jar“retrieve org-utili

  • bean的定义很简单: 如何使Spring正确地连接到WebSphere JNDI,即使单元测试是在应用程序容器之外运行的?

  • 我有一个控制器 服务接口 我想在我的控制器中使用@autowired来使用该服务,但当我运行应用程序时,我得到以下错误 org.springframework.beans.factory.beanCreationException:创建名为“demo application”的bean时出错:注入autowired依赖项失败;嵌套异常为org.SpringFramework.Beans.Facto

  • 我有一个Advision类,它使用了代理jar中的另一个类,但这个类依赖于代理jar中不存在的一个类。代理jar中不存在的这个类存在于应用程序类加载器上的另一个jar中。代理jar位于系统类加载器上。所以我没有遇到ClassDefounderRor。我已经尝试使用Transformer.forAdvise,这是在另一篇文章中建议的,但这只适用于Advise类。

  • 如何在类中注入依赖与@Inject注释micronaut框架 如何使用@Inject

  • 我有一个包含2个模块的maven项目。其中一个模块包含注释处理器。当我尝试将项目作为Android项目的依赖项导入时,它不会运行注释处理器。找不到生成的类文件。 我从jitpack导入如上所示的项目。jitpack上的构建成功了,我也可以在本地访问代码,这意味着编译成功了。但是应该生成的类并没有生成。所以要么是处理器没有启动,要么是我生成的类在错误的位置?android项目确实使用了许多其他带有注