@Resurce和@Autowired的區別

@Resurce和@Autowired的區別

 

@Component、@Repository、@Service和 @Controller等標註的默認Bean名稱會是小寫開頭的非限定類名

 

@Resource 默認按名稱裝配,當找不到名稱匹配的bean再按類型裝配.

@Resource(name="beanName")指定了name屬性,按名稱注入但沒找到bean, 就不會再按類型裝配了.

 

@Autowired  默認按類型匹配,自動裝配(Srping提供的)

@Autowired(required=true)  一定要找到匹配的Bean,否則拋異常。 默認值就是true

 

@Autowired

@Qualifier("bean的名字") 

按名稱裝配Bean,與@Autowired組合使用,解決按類型匹配找到多個Bean問題。

 

在使用@Autowired注入的時候根據定義bean的方式不同有三種情況

:

@Service
@Primary
public class QualifyPrimaryServiceImpl1 implements QualifyPrimaryService {

    @Override
    public void eat() {
        System.out.println("我是1");
    }
}

 

@Service
@Qualifier("aaa")
//或者@Service("aaa")
public class QualifyPrimaryServiceImpl2 implements QualifyPrimaryService {

    @Override
    public void eat() {
        System.out.println("我是2");
    }
}

 

@Service
public class QualifyPrimaryServiceImpl3 implements QualifyPrimaryService {

    @Override
    public void eat() {
        System.out.println("我是3");
    }
}

有三個實現類繼承了同一個接口,下面三種注入方式,分別注入三個實現類


/*qualifyPrimaryService1 優先注入@Primary的類*/
@Autowired
private QualifyPrimaryService qualifyPrimaryService;


/*qualifyPrimaryService2  指定@Qualifier("aaa")的類*/
@Autowired
@Qualifier("aaa")
private QualifyPrimaryService qualifyPrimaryService;

/*qualifyPrimaryService3*/
@Autowired
@Qualifier("qualifyPrimaryServiceImpl3")
private QualifyPrimaryService qualifyPrimaryService;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章