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

来自其他jar的Spring Boot组件不在上下文中

孟茂学
2023-03-14

我有以下情况。JDK 17,Spring-Boot:2.6.2。一个gradle多项目。一个项目是一个库(java-Library,没有Spring启动插件)。另一个项目是带有Spring启动插件的Spring启动应用程序。一般不使用Spring依赖管理插件,而是使用gradle平台概念。应用程序项目包括每个“实现(项目(':...”

图书馆:

  • 库项目和spring boot应用程序项目有不同的包

例如:库根包是a.b.c,应用程序根包是a.b.d

  • 库项目在包层次结构的根包中有一个配置类(例如a. b. c. LibraryConfig),它用@Configuration注释和@ComponentScan注释注释注释,它具有指向此配置类的属性“base PackageClass”:
    @Configuration
    @ComponentScan(basePackageClass = LibraryConfig.class)
    public class LibraryConfig {
  • 在库层次结构内部(包a.b.c.*)是服务和rest控制器

应用:

  • 应用程序在包层次结构的根包中(例如在a.b.d中)有应用程序类,在子包“config”中有配置类(例如a.b.d.config.AppConfig),它从库中导入配置类:
  @Configuration
  @Import(a.b.c.LibraryConfig.class)
  public class AppConfig {

问题:库中的类在运行时存在-我们可以加载它们。库的任何组件都不在上下文中(未注册),服务和rest控制器都不在其中。

我们错过了什么?

我们尝试了不同的导入和扫描星座。还将组件扫描添加到应用程序类中,并在其中设置特定的包。没有任何帮助。

共有1个答案

陆涵畅
2023-03-14

问题是,主应用程序使用的是Spring Boot索引注释处理器和库,而不是。所以在启用了库的注释处理器之后,问题就解决了。

 类似资料:
  • 问题内容: 我运行以下命令: MyException在dependency.jar中。我也尝试用-classpath替换-cp。我做错了什么? 问题答案: 如果使用,则将忽略这些选项。如果在类路径上需要额外的jar文件,则应在清单中指定以下内容: (然后,您可以使用来运行程序。)

  • 我正在学习java,我正在尝试从另一个类向我的框架中添加一个菜单栏(练习将代码分成多个类以更好地组织程序)。 以下是我的代码示例: 和menubar类: 我使用eclipse,在这行中: “add”带下划线,因此我无法编译代码。 我一直在寻找解决这个问题的方法,据我所知,这应该是可行的。 感谢您的帮助。 非常感谢。 乔什

  • 我正在尝试制作一个.jar文件(这是我第一次),我很困惑。我了解如何使用命令提示符创建一个简单的jar文件,但对于我的程序,我导入了JavaMail API和我创建的另一个库(名为ArrayLibrary,其中填充了排序方法)。我如何在一个jar文件中创建这些?

  • 我正在开发一个SpringBoot应用程序(例如MyApp),它依赖于两个具有不同实现的数据项目: data-jdbc.jar 使用构建,它公开我的应用程序将使用的JDBCDataService类 示例代码: null null null 示例存储库: 在我的SpringBoot项目中,我有以下SpringBoot主应用程序: 在我的业务服务类中,我有以下注入 我现在已经找到了解决问题的办法。为了

  • 问题内容: 因此,我有两个不同的文件,如下所示: file1.py file2.py 但是我似乎无法让file2识别来自file1的变量,即使它已经导入到file1中也是如此。如果可以某种方式实现,那将非常有帮助。 问题答案: 导入在使得全球(即,模块级)的约束名字提供给下面的代码-唯一的此类名称是。它并 没有 做反向:在定义的名称并不提供给代码的时候进口。即使您以正确的方式(如@nate正确建议

  • 我正在使用Intellij Idea 11.1.3(我也在Eclipse中试用过)和JRE1.7。我的操作系统是Win7x64。 当我双击我使用IntelliJ创建的jar文件时,我的程序工作得很好。此外,当我执行命令“java-jar*.jar”时,它也起作用,其中*是我的jar文件的名称。 现在我想创建一个.exe文件,这样我就可以在其他计算机上运行该程序了。 我用Winrar打开了.jar文