[Spring boot] Autowired by name, by @Primary or by @Qualifier

In the example we have currently:

复制代码
@Component
public class BinarySearchImpl {

    @Autowired
    private SortAlgo sortAlgo;

    public int binarySearch(int [] numbers, int target) {
        // Sorting an array

        sortAlgo.sort(numbers);
        System.out.println(sortAlgo);
        // Quick sort

        // Return the result
        return 3;
    }

}
复制代码
复制代码
@Component
@Primary
public class QuickSortAlgo implements SortAlgo{
    public int[] sort(int[] numbers) {
        return numbers;
    }
}

@Component
public class BubbleSortAlgo implements SortAlgo{
    public int[] sort(int[] numbers) {
        return numbers;
    }
}
复制代码

 

The way we do Autowired is by '@Primary' decorator. 

It is clear that one implementation detail is the best, then we should consider to use @Primary to do the autowiring

Autowiring by name

It is also possible to autowiring by name:

    
// Change From
@Autowired
 private SortAlgo sortAlgo;

// Change to
@Autowired
private SortAlgo quickSortAlgo

We changed it to using 'quickSortAlgo', even we remove the @Primary from 'QuickSortAlgo', it still works as the same.

@Component
// @Primary
public class QuickSortAlgo implements SortAlgo{
    public int[] sort(int[] numbers) {
        return numbers;
    }
}

 

@Qualifier('')

Instead of using naming, we can use @Qualifier() to tell which one we want to autowired.

复制代码
@Component
@Primary
@Qualifier("quick")
public class QuickSortAlgo implements SortAlgo{
    public int[] sort(int[] numbers) {
        return numbers;
    }
}


@Component
@Qualifier("bubble")
public class BubbleSortAlgo implements SortAlgo{
    public int[] sort(int[] numbers) {
        return numbers;
    }
}
复制代码
@Autowired
@Qualifier("bubble")
private SortAlgo sortAlgo;

In this case, it will use 'BubbleSortAlgo'. 

 

So we can say that

@Qualifier > @Primary > @naming

 

posted @   Zhentiw  阅读(763)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2017-04-04 [CSS] Build Responsive CSS Layouts with Tachyons
2017-04-04 [CSS] Specify grid columns, rows, and areas at once with the grid-template shorthand
2017-04-04 [CSS] Nest a grid within a grid
2017-04-04 [CSS] Re-order the appearance of grid items using the order property
2016-04-04 [SVG] Simple introduce for SVG
点击右上角即可分享
微信分享提示