java - 如何自动装配从另一个 jar 导入的服务?
问题描述
我有一个 jar 文件,其中包含一个HelloService
带有@Service
注释的 java 类。我想将它自动装配到我正在编写的@Component
类中(自动装配到构造函数中)。GoodByeComponent
因此, for 的骨架HelloService
可能看起来像这样:
@Service
public class HelloService
{
...
}
GoodByeComponent
看起来像:
import from.some.jar.HelloService
@Component
public class GoodByeComponent
{
private final HelloService helloService;
@Autowired
public GoodByeComponent(HelloService helloService)
{
this.helloService = helloService;
}
}
可以理解的是,我收到一条错误消息Could not autowire. No beans of 'HelloService' type found.
所以。我有一些想法,我可能需要在某个返回的地方创建一个 bean HelloService
?我什至如何实例化服务......?它还需要自动连接其他东西。这可能吗,还是太头疼了,我可能应该把它复制到我的罐子里?
解决方案
您的问题没有足够的信息,但很可能,您的应用程序@ComponentScan
在程序的某处有注释。该注释负责找到您的@Component
并@Service
初始化它们。
默认情况下,@ComponentScan
只扫描自己的包。所以假设你有一个类似于这样的包结构:
your.own.package ---- ConfigurationClass
|
--- GoodByeComponent
然后春天自然而然,只会发现GoodByeComponent
而找不到HelloService
。
您必须为其提供其他位置,例如:
@ComponentScan({ "your.own.package", "from.some.jar" })
这将允许 spring 发现您自己的应用程序中的 bean,以及您依赖的外部依赖项。
推荐阅读
- azure - Azure 函数 Cosmos DB 输出绑定 - 自定义 JsonSerializerSettings
- javascript - Meteor/Cordova 应用程序未将 graph.facebook 图像保存到数据缓存中
- android - 在滚动视图中滚动firebase Recyclerview到最后插入的项目
- android - 我应该为 compileSdkVersion、minSdkVersion 和 targetSdkVersion 设置什么以支持从 Marshmallow 到 Pie?
- dart - 使用 source_gen 包,我怎样才能获得初始值设定项?
- google-chrome-extension - 在 chrome 扩展中使用嵌套异步调用传递消息失败
- node.js - 无法为 Nodejs VSCODE 启用调试器
- python - 从表示多级字典的字符串创建 Dask Dataframes
- c - 负数右移不仅是未定义的,而且在clang中从一对多映射
- netlogo - 海龟在碰撞后必须在几个滴答声后死去