问题场景:

笔者在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. LightOJ - 1179-Josephus Problem(约瑟夫环)

    链接: https://vjudge.net/problem/LightOJ-1179 题意: The historian Flavius Josephus relates how, in the R ...

  2. selenium之python源码解读-expected_conditions

    一.expected_conditions 之前在 selenium之python源码解读-WebDriverWait 中说到,until方法中method参数,需要传入一个function对象,如果 ...

  3. linux 忘记root密码怎么处理。

    这个是不少人纠结的地方.一台服务器,太久没使用,然后又没有一个文件txt,excel记录那些密码相关的东西.所以导致很多信息忘记了. 参考文章:https://blog.csdn.net/cranky ...

  4. 如何让MySQL语句执行加速?

    一打开科技类论坛,最常看到的文章主题就是MySQL性能优化了,为什么要优化呢? 因为: 数据库出现瓶颈,系统的吞吐量出现访问速度慢 随着应用程序的运行,数据库的中的数据会越来越多,处理时间变长 数据读 ...

  5. js与json的区别,json的概述,json与面向对象,json与对象的转换

    <script> //js与json的区别,json的概述,json与面向对象,json与对象的转换 //json的概述:json(javascript object Notation,j ...

  6. webservice企业开发实例

    1. 2. 3.环境变量的配置 4.创建动态web工程-->版本2.5-->tomcat7.0 第一步:创建cxf项目 第二步:添加cxf的jar包 全部将jar包拷入lib目录下 第三步 ...

  7. linux系列(十):cat命令

    1.命令格式: cat [选项] [文件] 2.命令功能: cat主要有三大功能: (1).一次显示整个文件:cat filename (2).从键盘创建一个文件:cat > filename  ...

  8. NetworkX系列教程(10)-算法之五:广度优先与深度优先

    小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...

  9. pyCharm专业版破解方案【附:四种破解】

    前言: 一般适合我们的工具才是好的工具,通过调研对比发现pycharm还不错,其它工具就不一一列举了 pyCharm社区版可以永久免费,但是它不支持HTML, JS, and SQL等,为了方便以后使 ...

  10. 简述*args and **kwargs

    为了能让一个函数接受任意数量的位置参数:* 为了接受任意数量的关键字参数:** *参数只能出现在函数定义中最后一个位置参数后面,而**参数只能出现在最后一个参数 解决的问题:构造一个可接受任意数量参数 ...