【问题标题】:Spring Autowired annotation with service implementation带有服务实现的 Spring Autowired 注解
【发布时间】:2016-09-27 16:38:08
【问题描述】:

我对下面的场景没有什么疑问。

拥有一个接口和两个实现类:

界面:

interface ServiceInt
{
   public void save();
}

第一个实现类:

Public class ServiceIntImpOne implements ServiceInt
{
   public void save()
   {
     // I am first service implementation
   }

}

第二个实现类:

Public class ServiceIntImpTwo implements ServiceInt
{
   public void save()
   {
     // I am Second service implementation
   }

}

主类调用实现类的save方法:

Public class controller
{
   @Autowired ServiceInt;

   public void save()
   {
     ServiceInt.save()
   }
}

我的问题:

  1. ServiceInt.save() – 它会调用服务类实现的哪个保存方法?
  2. 我们如何使用ServiceIntImpTwo类的save方法实现?
  3. 自动连线如何工作?

【问题讨论】:

  • 我编辑了我的答案

标签: spring


【解决方案1】:

ServiceInt.save() – 服务类实现的保存方法 它会调用吗?

如果您有两个相同类型的 bean(通过注释或通过 xml 定义的 bean),当您自动装配该 bean 时,它将失败(抛出异常),因为 Spring 不知道要注入哪个 bean。

caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
    No unique bean of type [ServiceInt] is defined:

我们如何使用 ServiceIntImpTwo 的保存方法实现 上课?

如果你在 xml 文件中定义了你的 bean,那么你可以使用 id 属性

<bean id="beanTwo" class="ServiceIntImpTwo" />

然后您可以使用限定符注释自动装配

@Autowired
@Qualifier("beanTwo")
ServiceInt myServiceTwo;

如果您使用的是注解。

@Component
Class ServiceIntImpTwo impl...{}

然后你就可以自动接线了

@Autowired
@Qualifier("serviceIntImpTwo ")
ServiceInt myServiceTwo;

自动连线是如何工作的?

这个你可以在互联网上阅读。

http://memorynotfound.com/handling-multiple-autowire-dependencies-with-spring-qualifier/ https://www.mkyong.com/spring/spring-autowiring-qualifier-example/ https://www.tutorialspoint.com/spring/spring_qualifier_annotation.htm

【讨论】:

  • 你提到了@Qualifier("serviceIntImpTwo") 但是值“serviceIntImpTwo”会从哪里来,因为我们没有在注释的任何地方定义这个值。
  • Spring默认为bean生成一个名字,名字和class一样,但第一个字符小写
  • 非常感谢您的帮助 :)
【解决方案2】:

如果您对一个接口有两种实现,则需要提供 spring 提示使用哪一种:

  1. 可以使用@Qaulifier注解
  2. 您可以使用@Profile 并选择活动配置文件。

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多