1:@qualifier
@qualifier 注釋指定注入 bean 的名稱,這樣歧義就消除了。所以@autowired 和@qualifier 結(jié)合使用時(shí),自動(dòng)注入的策略就從 bytype 轉(zhuǎn)變成 byname 了。例子如下:
有一個(gè)接口:
1
2
3
|
public interface employeeservice { public string getemployeebyid( long id); } |
有兩個(gè)實(shí)現(xiàn)類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@service ( "service" ) public class employeeserviceimpl implements employeeservice{ @override public string getemployeebyid( long id) { return "0" ; } } @service ( "service1" ) public class employeeserviceimpl1 implements employeeservice{ @override public string getemployeebyid( long id) { return "1" ; } } |
controller層調(diào)用service層:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
@restcontroller public class employeeinfocontrol { @autowired @qualifier ( "service" ) //括號(hào)里面的值是實(shí)現(xiàn)類@service時(shí)給類取得名字,加上此注解不會(huì)報(bào)錯(cuò) private employeeservice employeeservice; @requestmapping ( "/emplayee.do" ) public void showemplayeeinfo(){ string employeebyid = employeeservice.getemployeebyid(1l); system.out.println( "employeebyid值為" +employeebyid); } } //此時(shí)會(huì)報(bào)錯(cuò) 因?yàn)锧autowired // private employeeservice employeeservice; //注入的是service層的接口,此時(shí)有兩個(gè)實(shí)現(xiàn),不知道綁定的是哪個(gè)實(shí)現(xiàn)。 //此時(shí)應(yīng)該在@autowired下面配合@qualifier注釋使用,用來說明要綁定的具體是哪個(gè)實(shí)現(xiàn)類 //如上面所示 |
2:@restcontroller
注解在類上,表示這是一個(gè)控制層bean。常用于控制層類的前面,是@responsebody和@controller的合集 。
- @responsebody:用該注解修飾的函數(shù),會(huì)將結(jié)果直接填充到http的響應(yīng)體中,一般用于構(gòu)建restful的api,將java對(duì)象轉(zhuǎn)為json格式的數(shù)據(jù)。
- @controller:用于定義控制器類,在spring 項(xiàng)目中由控制器負(fù)責(zé)將用戶發(fā)來的url請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)接口(service層)。
3:@requestmapping
提供路由信息,負(fù)責(zé)url到controller中的具體函數(shù)的映射。
4:@springbootapplication
該注解用在運(yùn)行類之上,相當(dāng)于@enableautoconfiguration、@componentscan和@configuration的合集。
- @enableautoconfiguration:spring boot自動(dòng)配置(auto-configuration)。
- @componentscan:表示將該類自動(dòng)發(fā)現(xiàn)(掃描)并注冊(cè)為bean,可以自動(dòng)收集所有的spring組件,包括@configuration類。我們經(jīng)常使用@componentscan注解搜索beans,并結(jié)合@autowired注解導(dǎo)入。
- @configuration:相當(dāng)于傳統(tǒng)的xml配置文件,如果有些第三方庫需要用到xml文件,建議仍然通過@configuration類作為項(xiàng)目的配置主類 ——可以使用@importresource注解加載xml配置文件。
5:@import
用來導(dǎo)入其他配置類。
6:@autowired
自動(dòng)導(dǎo)入依賴的bean。
7:@service
注解在類上,表示這是一個(gè)業(yè)務(wù)層bean。
8:@repository
注解在類上,表示這是一個(gè)數(shù)據(jù)訪問層bean。使用@repository注解可以確保dao或者repositories提供異常轉(zhuǎn)譯,這個(gè)注解修飾的dao或者repositories類會(huì)被componetscan。
9:@query
自定義sql查詢語句
10:@entity
用在實(shí)體類的前面,表示這是一個(gè)實(shí)體類。
11:@table(name=“”)
用在實(shí)體類的前面,一般和@entity一起使用,表示該實(shí)體類映射數(shù)據(jù)庫中的某張表。
12:@column
表示實(shí)體類的某個(gè)屬性映射為表中的某個(gè)字段,包含的設(shè)置如下:name:數(shù)據(jù)庫表字段名;unique:是否唯一 ;nullable:是否可以為空 ;length:長度。
13:@id
該注釋用在實(shí)體類中,寫在哪個(gè)屬性的前面,表示該屬性映射到數(shù)據(jù)庫中的字段為主鍵。
14:@generatedvalue
表示主鍵的生成策略,和@id一起使用
15:@transient
表示該屬性并非一個(gè)到數(shù)據(jù)庫表的字段的映射,orm框架將忽略該屬性。如果一個(gè)屬性并非數(shù)據(jù)庫表的字段映射,就務(wù)必將其標(biāo)示為@transient。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
原文鏈接:https://blog.csdn.net/weixin_40581455/article/details/85008995