spring筆記-@Primary注解


1.問題

當一個接口有2個不同實現時,使用@Autowired注解時會報org.springframework.beans.factory.NoUniqueBeanDefinitionException異常信息

2.方案1-@Qualifier

使用Qualifier注解,選擇一個對象的名稱,通常比較常用

3. 方案2-@Primary

Primary可以理解為默認優先選擇,同時不可以同時設置多個,
內部實質是設置BeanDefinition的primary屬性

示例

@Component("metalSinger") // 加注解,讓spring識別 public class MetalSinger implements Singer{ @Override public String sing(String lyrics) { return "I am singing with DIO voice: "+lyrics; } } @Primary @Component("operaSinger") public class OperaSinger implements Singer { @Override public String sing(String lyrics) { return "I am singing in Bocelli voice: "+lyrics; } } public interface Singer { String sing(String lyrics); } @Component public class SingerService { private static final Logger logger = LoggerFactory.getLogger(SingerService.class); @Autowired @Qualifier private Singer singer; public String sing(){ return singer.sing("song lyrics"); } public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext("context.annotation.primary"); SingerService singerService = context.getBean(SingerService.class); System.out.println(singerService.sing()); } }



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM