问题场景:

笔者在springboot项目中使用java_websocket作为客户端,调用第三方ws服务。

最初只调用一个ws服务,以下代码可以正常工作:

   @Bean
public URI ttsUri() throws URISyntaxException {
return new URI("ws://1.1.1.1:8888/xxx");
} @Slf4j
@Component("ttsOfflineClient")
public class OfflineTTSWsClient extends WebSocketClient { @Autowired
public OfflineTTSWsClient(URI serverUri) throws IOException {
super(serverUri);
}
......
}

后来又加一个ws服务:ws://2.2.2.2:7777/aaaa 尝试写以下代码报错


@Bean(name = "ttsUri")
public URI ttsUri() throws URISyntaxException {
return new URI("ws://1.1.1.1:8888/xxx");
}
@Autowired
@Qualifier(value = "ttsUri")
public OfflineTTSWsClient(URI serverUri) throws IOException {
super(serverUri);
} //报错:@Qualifier is not applicable for constructor

正确方法

@Autowired
public OfflineTTSWsClient(@Qualifier(value = "ttsUri") URI serverUri) throws IOException {
super(serverUri);
}

或者(注意两段代码差别)

public OfflineTTSWsClient(@Qualifier(value = "ttsUri") URI serverUri) throws IOException {
super(serverUri);
}

最终两个ws正常工作代码如下:

@Bean(name = "ttsUri")
public URI ttsUri() throws URISyntaxException {
return new URI(""ws://1.1.1.1:8888/xxx");
} @Bean(name = "asrUri")
public URI asrUri() throws URISyntaxException {
return new URI("ws://2.2.2.2:7777/aaaa");
} @Slf4j
@Component("ttsOfflineClient")
public class OfflineTTSWsClient extends WebSocketClient { @Autowired
public OfflineTTSWsClient(@Qualifier(value = "ttsUri") URI serverUri) throws IOException {
super(serverUri);
}
} @Slf4j
@Component("asrOfflineClient")
public class OfflineASRWsClient extends WebSocketClient { public OfflineASRWsClient(@Qualifier(value = "asrUri") URI serverUri)
{
super(serverUri);
}
}

参考来源:https://stackoverflow.com/questions/42350828/why-qualifier-not-allowed-above-constructor

@Qualifier is not applicable for constructor的更多相关文章

  1. Java-Class-@I:org.springframework.beans.factory.annotation.Autowired

    ylbtech-Java-Class-@I:org.springframework.beans.factory.annotation.Autowired 1.返回顶部   2.返回顶部 1. pack ...

  2. 【Spring Framework】spring管理自己new的对象

    使用AutowireCapableBeanFactory手动注入 使用.newInstance();创建对象的话,如果其他对象都使用Spring Autowired,还需要手动创建所有依赖的Bean: ...

  3. Java 设计模式--策略模式,枚举+工厂方法实现

    如果项目中的一个页面跳转功能存在10个以上的if else判断,想要做一下整改 一.什么是策略模式 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决 ...

  4. Spring实战3:装配bean的进阶知识

    主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expressio ...

  5. [IoC]6 详解@Autowired、@Qualifier和@Required

    A.@Autowired org.springframework.beans.factory.annotation.Autowired public @interface Autowired Mark ...

  6. 详解@Autowired、@Qualifier和@Required

    A.@Autowired org.springframework.beans.factory.annotation.Autowired public @interface Autowired Mark ...

  7. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-004-消除BEAN自动装配的歧义@QUALIFIER及自定义注解

    一. The @Qualifier annotation is the main way to work with qualifiers. It can beapplied alongside @Au ...

  8. 使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱

    1.当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的某一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释来精确配置. 2.示例 ...

  9. Spring 的@@Autowired 和 @Qualifier注释

    @Autowired spring2.1中允许用户通过@Autowired注解对Bean的属性变量.属性Setter方法以及构造方法进行标注,配合AutowiredAnnotationBeanProc ...

随机推荐

  1. 0016SpringBoot实现RESTFUL形式的增删改查

    1.列表页面如下 <!DOCTYPE html><!-- saved from url=(0052)http://getbootstrap.com/docs/4.0/examples ...

  2. 【Java】Javadoc的使用

    一.名词解释 javadoc是从程序源代码中抽取类.方法.成员等注释形成一个和源代码配套的API帮助文档.也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以同 ...

  3. vue 2.0 watch 监听对象的变化

  4. jquery限定文字超出用省略号

    都知道用css3可以做到一行超出显示省略号,但多行的用css3很麻烦还要考虑兼容,今天用jquery判断字数来限制出现省略号 $(".ftlt_lt_wzne").each(fun ...

  5. 33、[源码]-AOP原理-获取拦截器链-MethodInterceptor

    33.[源码]-AOP原理-获取拦截器链-MethodInterceptor

  6. [GraphQL] Query Lists of Multiple Types using a Union in GraphQL

    Unions are used when we want a GraphQL field or list to handle multiple types of data. With a Union ...

  7. Linux 查看实时网卡流量的几种方式

    在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查看Linux服务器的实时网卡流量. 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众 ...

  8. Cogs 329. K- 联赛(最大流)

    K- 联赛 ★★★ 输入文件:kleague.in 输出文件:kleague.out 简单对比 时间限制:1 s 内存限制:32 MB [问题描述] K- 联赛职业足球俱乐部的球迷们都是有组织的训练有 ...

  9. 搭建自己的博客(二十一):通过django表单实现登录注册

    1.变化的部分

  10. Log4j2 - 日志框架中isDebugEnabled()的作用

    为什么要使用isDebugEnabled() 之前在系统的代码中发现有时候会在打印日志的时候先进行一次判断,如下: if (LOGGER.isDebugEnabled()) { LOGGER.debu ...