首页 > 解决方案 > 如何自动装配从另一个 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?我什至如何实例化服务......?它还需要自动连接其他东西。这可能吗,还是太头疼了,我可能应该把它复制到我的罐子里?

标签: javaspring

解决方案


您的问题没有足够的信息,但很可能,您的应用程序@ComponentScan在程序的某处有注释。该注释负责找到您的@Component@Service初始化它们。

默认情况下,@ComponentScan只扫描自己的包。所以假设你有一个类似于这样的包结构:

your.own.package ---- ConfigurationClass
                  |
                  --- GoodByeComponent

然后春天自然而然,只会发现GoodByeComponent而找不到HelloService

您必须为其提供其他位置,例如:

@ComponentScan({ "your.own.package", "from.some.jar" })

这将允许 spring 发现您自己的应用程序中的 bean,以及您依赖的外部依赖项。

请参阅:https ://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html


推荐阅读