【问题标题】:@autowired @qualifier pointing to a service in a jar file application@autowired @qualifier 指向 jar 文件应用程序中的服务
【发布时间】:2010-07-19 15:17:38
【问题描述】:

我正在使用另一个应用程序的服务,因为一切都已经完成。

我的应用是使用应用jar里面的接口类。 但是调用此代码时似乎有问题。

BeanFactory factory = new ClassPathXmlApplicationContext( "/Context-Controller.xml");

即使我的Context-Controller.xml 有这个代码

<context:component-scan base-package="com.package" />

我的错误。

原因: org.springframework.beans.factory.NoSuchBeanDefinitionException: 没有唯一的 bean 类型 [com.package.ServiceIamUsing] 是 定义:不满足的依赖 类型[接口 com.package.ServiceIamUsing]:预期 至少 1 个匹配的 bean

这就是我在应用程序中自动接线的方式。

    public class MyAppDao implements IMyAppDao {

 @Autowired
 @Qualifier("serviceIamUsing")
 private ServiceIamUsing serviceIamUsing;
    //More codes here

        }

【问题讨论】:

  • 应用是如何打包的?您是否在 servlet 容器中运行?
  • 将要使用的应用程序 jar 打包在一个 jar 文件中。并且不要不在 servlet 容器上运行它
  • 我有同样的问题,这似乎与 jar 不包含目录,只包含文件的事实有关。不知道如何告诉 maven 在安装目标期间打开目录创建

标签: java spring annotations


【解决方案1】:

杰,试试以下方法: - 消除正斜杠“/” - 在您的应用程序上下文 xml 文件中,尝试从外部 jar 文件中导入应用程序上下文(如果有) --> import resource="classpath*:/META-INF/spring/*.xml"

让我知道它是否有效。

【讨论】:

  • jenu,它仍然有同样的错误。似乎 jar 文件中带有自动装配的所有 java 文件都需要在我的 context.xml 上声明一个 bean。
【解决方案2】:

事实上,在 jar 中是否有一个 ServiceIamUsing 实例也是 Spring-annotated(@Component、@Service 等)?有可能是这种情况,但我想澄清一下。

如果没有,jar 是否会公开一个您可以导入的 Spring 上下文文件,从而将额外的 bean 添加到您的上下文中以进行自动装配?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2016-12-05
    • 2017-04-11
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    相关资源
    最近更新 更多