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

如何将从Spring库扫描的组件包含到使用该库的主应用程序中?

郭琨
2023-03-14

我们正在构建一个基于Spring的Java库,该库有几个@autowed分配,这些分配从库路径中拾取@Bean实例,在运行时检测到这些实例。

当我们直接测试应用程序(在库中使用@SpringBootApplication)时,这非常有效

然而,当我们在其他项目中将库作为依赖项包含时,它不会对库类进行组件扫描,因此@Autowired注入永远不会发生。

当然,我们可以告诉应用程序开发人员将库路径添加到他们的组件扫描中,但是这会导致问题、错误和挫折。

我们如何告诉Spring对库类进行组件扫描,而不在消费类应用程序中显式地包含扫描库?

共有1个答案

韶硕
2023-03-14

您可以在库中创建一个配置,定义库需要的组件。这个答案显示了类似的情况。

另一种方法是创建自己的自动配置。Spring留档中的这篇文章描述了它是如何工作的。

 类似资料:
  • 我需要发布一个基于Spring Boot的jar,它应该在其他基于Spring/Spring Boot的应用程序中使用。在我的重用jar中,我有一个类(BusinessConfig),它注释为@配置,并给出两个bean。这个类在重用jar的基本包中。 在第二个应用程序中,我添加了依赖项,在应用程序类中,我有语句 通知Spring上下文查找BusinessConfig类中提供的bean。 这很有效,

  • 我有两个Maven模块。第一个,叫做“应用程序”,包含了只包含以下行的Application类: 在同一个Maven模块和包中,我有一个,它使用,然后使用下面描述的其他Maven模块的组件。 另一个名为“model”的Maven模块包含组件(crud存储库、实体等)。所有这些类都与第一个Maven模块()位于相同的包结构下,但都位于该模块的子包中,比如,等。 所以,流程是这样的: Maven模块包

  • 我有一个遗留的Spring应用程序,不管上下文是否完全用XML配置。我想使用@controller注释向应用程序添加一个新的控制器,所以我开始迁移到使用注释。 作为测试,我在应用程序中添加了以下控制器 我还添加了上下文:组件扫描标记到我的Spring上下文 尽管classpath scanner(ClassPathScanningCandidateComponentProvider)选择了hell

  • 我需要能够将数据库配置属性存储在一个外部文件中,该文件很好地被应用程序jar使用,并以jstl表达式的形式包含它。(如:${password}等)? springconfig.xml文件 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/con

  • 我有理由相信SpringBoot至少不会扫描实体类,尽管实体位于主包的子包中。我让它与@ComponentScan注释一起工作,至少在某种程度上是这样。但是,我注意到另一个组件也没有运行。我相信这是一件非常简单的事情,因为这是一份来自不同软件包的非常接近的副本。 注意:我尝试添加@ComponentScan,@EntityScan,@EnableJpaRepository。这已经摆脱了最初的错误,

  • 我正在开发一个使用SQLite DB的WPF桌面应用程序,它位于我的App_data文件夹中,在调试中运行它是可以的,但是当我构建应用程序并在另一台计算机上运行它时,如何包含DB文件呢?我是否需要为我的应用程序构建安装程序,以便在具有读/写访问权限的用户计算机上的某个位置创建DB的副本? 谢谢