No qualifying bean of type ‘org.activiti.engine.TaskService‘ available: expected at least 1

解决TaskService无法注入问题

spring boot 整合activity 报错org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.activiti.engine.TaskService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

错误注入方式

@Autowired
    private TaskService taskService;        // 任务管理

正确注入方式

  @Qualifier("taskService")
    private TaskService taskService;

核心区别概览​

维度

​@Autowired​

​@Qualifier​

来源

​Spring 特有​

​Spring 特有​​(配合自动装配使用)

默认装配策略

​按类型(ByType)​​;若同类型有多个候选,再结合名称或使用其他策略

不单独装配;与 @Autowired配合时,按名称/限定符精确匹配

是否可单独使用

可单独用于字段、构造器、方法、参数

通常不可单独使用;在字段/方法/参数上需与 @Autowired搭配

多候选 Bean 时

可能抛出 ​​NoUniqueBeanDefinitionException​​;可用 @Qualifier或 @Primary消歧

显式指定要注入的 Bean 名称/限定符,优先级高

可选依赖

支持 required=false

不具备 required属性;不匹配时通常导致注入失败

常见搭配

@Qualifier@Primary、构造器/方法/字段

@Autowired@Bean的 value、自定义限定符注解

上述规则是 Spring 自动装配的基础机制:@Autowired负责“按类型找候选”,@Qualifier负责“按名称/限定符精确指定”


​工作机制与优先级

  • ​按类型匹配​​:@Autowired先按类型在容器中查找候选 Bean。

    1. 若存在 ​​@Primary​​ 标记的 Bean,优先注入;

    2. 若同时存在 @Qualifier,则以 @Qualifier指定的名称/限定符为准进行精确匹配(优先级高于 @Primary);.

    3. 若仍未唯一,再尝试按名称或报错。•

    4. ​结论​​:@Qualifier用于“显式指定”,@Primary用于“设定默认”。两者并存时,以 @Qualifier为准

  • ​歧义消解顺序​​:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值