1. 程式人生 > >spring 註解@primary解析

spring 註解@primary解析

spring中少見的註解@primary註解,例子

@Component  
public class MetalSinger implements Singer{  

    @Override  
    public String sing(String lyrics) {  
        return "I am singing with DIO voice: "+lyrics;  
    }  
}  
public class OperaSinger implements Singer {  
    @Override  
    public String sing
(String lyrics) { return "I am singing in Bocelli voice: "+lyrics; } }

這兩個類都實現了singer介面

public interface Singer {  
    String sing(String lyrics);  
}  

那麼來個注入的:

@Component  
public class SingerService {  
    private static final Logger logger = LoggerFactory.getLogger(SingerService.class);  

    @Autowired
private Singer singer; public String sing(){ return singer.sing("song lyrics"); } }

那麼最後輸出應該是:I am singing with DIO voice: song lyrics.

原因是隻有MetalSinger使用了註解@component,那麼autowird會只尋找這個標記的
進行注入:
如果也在OperaSinger 中使用了註解,則spring會報異常,不知道到底應該用
哪個:
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [main.service.Singer] is defined: expected single matching bean but found 2: metalSinger,operaSinger
而如果要讓spring知道必須注入的是OperaSinger ,則可以用@primary註解告訴
spring:

@Primary  
@Component  
public class OperaSinger implements Singer{  

    @Override  
    public String sing(String lyrics) {  
        return "I am singing in Bocelli voice: "+lyrics;  
    }  
}  

相關推薦

spring 註解@primary解析

spring中少見的註解@primary註解,例子 @Component public class MetalSinger implements Singer{ @Override public String sing(St

spring中少用的註解@primary解析

這次看下spring中少見的註解@primary註解,例子  Java程式碼   @Component   public class MetalSinger implements Singer{       @Override       public String 

spring註解大全解析 spring springboot註解

今天整理了一下spring常用到的註解: 希望可以幫到你們喲! @Service用於標註業務層元件 @Controller用於標註控制層元件(如struts中的action) @Repository

spring註解 @primary

@Primary:意思是在眾多相同的bean中,優先使用用@Primary註解的bean。 1.在多資料來源的時候,使用@Primary註解用於指定其中一個作為主資料來源,即如果資料庫操作沒有指明使用哪個資料來源的時候,預設使用主資料來源,這個時候我們就使用到了@prima

註解@primary解析

spring中少見的註解@primary註解,例子 @Component public class MetalSinger implements Singer{ @Override public String sing(String lyri

Spring源碼解析-基於註解依賴註入

上下文 owa necessary test processor 當前 dha count any 在spring2.5版本提供了註解的依賴註入功能,可以減少對xml配置。 主要使用的是 AnnotationConfigApplicationContext: 一個註解配置上

Spring註解開發-全面解析常用註解使用方法之生命周期

統一 ota tco conf struct 賦值 組件註冊 功能 pri 本文github位置:https://github.com/WillVi/Spring-Annotation/ 往期文章:Spring註解開發-全面解析常用註解使用方法之組件註冊 bean生命周期

關於@Profile、@Conditional、@Primary、@Qualifier及@Scope等實現高階裝配的spring註解

1、關於@Profile註解的介紹 @Profile註解主要用在針對不同環境而條件選擇的注入bean 在開發過程中由於環境的不同,我們可能在針對某些功能,需要開發不同的實現,然而在某種環境中,只能啟用其中一種實現,其他的實現處於不啟用的狀態。這個時候我們在需要建立的bean上新增@Profi

Spring MVC 註解 @RequestParam解析

在Spring MVC 後臺控制層獲取引數的方式主要有兩種,一種是requset.getParameter(“name”),另一種是用註解@Resquest.Param直接獲取。 一、基本使用獲取提交資料 後臺程式碼: @AuthPassport @RequestMapping("/publishe

終極講解,看了立馬懂 --》Spring註解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析

我們在使用spring的時候經常會用到這些註解,那麼這些註解到底有什麼區別呢。我們先來看程式碼 同樣分三層來看: Action 層: package com.ulewo.ioc; import org.springframework.beans.factory.annotation.Autowired; i

spring註解說明和註解簡單解析以及部分常見註解說明

背景:熟悉註解的作用,以及有可能需要自定義註解。 元註解: @Target 表示該註解可以用於什麼地方,可能的ElementType引數有: CONSTRUCTOR:構造器的宣告 FIELD:域宣告(包括enum例項) LOCAL_VARIABLE:區域性變數宣告 METHOD:方法

非同步任務spring @Async註解原始碼解析

1.引子 開啟非同步任務使用方法: 1).方法上加@Async註解  2).啟動類或者配置類上@EnableAsync 2.原始碼解析 雖然spring5已經出來了,但是我們還是使用的spring4,本文就根據spring-context-4.3.14.RELEASE.jar來分析原始碼。 2.1

Spring註解解釋(@Primary、@Qualifier)

@Primary/@Qualifier 當你一個介面的實現類有多個的時候,你通過@Component來註冊你的實現類有多個,但是在注入的時候使用@Autowired 這樣問題就來了,Sp

Spring註解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析

Spring註解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析 我們在使用spring的時候經常會用到這些註解,那麼這些註解到底有什麼區別呢。我們先來

Spring實戰】Spring註解配置工作原理原始碼解析

一、背景知識在【Spring實戰】Spring容器初始化完成後執行初始化資料方法一文中說要分析其實現原理,於是就從原始碼中尋找答案,看原始碼容易跑偏,因此應當有個主線,或者帶著問題、目標去看,這樣才能最大限度的提升自身程式碼水平。由於上文中大部分都基於註解進行設定的(Spri

spring註解原始碼分析-解析和注入註解配置的資源

類內部的註解,如@Autowire、@Value、@Required、@Resource以及EJB和WebService相關的註解,是容器對Bean例項化和依賴注入時,通過容器中註冊的Bean後置處理處理這些註解的。 當使用Spring的註解功能時, <cont

Spring boot非同步註解原始碼解析

一、例子 我們先來看下面這個Demo。 pom.xml中maven依賴: <parent> <gro

Spring註解解析之ConfigurationClassPostProcessor

概述 Spring中有各種註解,比如@Configuration、@Import、@ComponentScan、@Autowi

Spring註解驅動開發】使用@Autowired@Qualifier@Primary三大註解自動裝配元件,你會了嗎?

## 寫在前面 > 【Spring專題】停更一個多月,期間在更新其他專題的內容,不少小夥伴紛紛留言說:冰河,你【Spring專題】是不是停更了啊!其實並沒有停更,只是中途有很多小夥伴留言說急需學習一些知識技能,以便於跳槽,哈哈,大家都懂得!所以,中途停更了一段時間,寫了一些其他專題的文章。現在,繼續更

Spring註解驅動開發】AOP核心類解析,這是最全的一篇了!!

## 寫在前面 > 昨天二狗子讓我給他講@EnableAspectJAutoProxy註解,講到AnnotationAwareAspectJAutoProxyCreator類的原始碼時,二狗子消化不了了。這不,今天又來讓我給他講講AOP的核心類。那我們就開始吧! > > 關於 **冰河技術