前言
? ? ? ? 最近學(xué)到springcloud肆氓,里面涉及到許多注解蛔趴,除了一些常用的注解嚣崭,大部分都是一知半解宙拉,這篇文章主要是整理一下這些注解方便后面忘了時可以回顧宾尚。
? ? ? ? 首先,先明確一下springcloud是什么谢澈?spring框架在開發(fā)中有效整合了多方資源煌贴,使用依賴注入對對象有效管理,面向切面編程的實現(xiàn)對項目模塊松耦合有著不錯的效果锥忿,可以說spring框架在現(xiàn)下已是一個java程序員必不可缺的一門功課牛郑。而由spring衍生的springboot是spring快速配置腳手架,可以幫助我們快速的開發(fā)單一的微服務(wù)敬鬓。springcloud則是對這些微服務(wù)的治理的一套分布式服務(wù)框架淹朋,用于管理微服務(wù)。
常見注解總結(jié)
? ? 組件注解
????????@Controller 控制層钉答, @Service 業(yè)務(wù)層瑞你,@Repository 展示層,以及一個通用的@Component希痴。在類前面加這些注解后可以將他們納入spring容器的管理,便于后續(xù)的維護春感。@Controller后續(xù)還有@RestController砌创,與@Controller無太大不同,區(qū)別是@RestController返回前端的格式是json鲫懒,而@Controller返回的是model嫩实。
? ? 注入注解
????????@Autowired自動注入和@Resource bean注入。兩者都可以作為注入屬性的修飾窥岩,在接口僅有單一實現(xiàn)類時甲献,兩個注解的修飾效果相同,可以互相替換颂翼,不影響使用晃洒。
????????@Resource是Java自己的注解慨灭,@Resource有兩個屬性是比較重要的,分是name和type球及;Spring將@Resource注解的name屬性解析為bean的名字氧骤,而type屬性則解析為bean的類型。所以如果使用name屬性吃引,則使用byName的自動注入策略筹陵,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性镊尺,這時將通過反射機制使用byName自動注入策略朦佩。
????????@Autowired是spring的注解,是spring2.5版本引入的庐氮,Autowired只根據(jù)type進行注入语稠,不會去匹配name。如果涉及到type無法辨別注入對象時旭愧,那需要依賴@Qualifier或@Primary注解一起來修飾颅筋。
? ? 請求相關(guān)注解
????????@RequestMapping和@RequestParam注解,前者綁定url输枯,后者綁定參數(shù)议泵。當(dāng)客戶端傳來請求時,請求url與請求方式method和@RequestMapping匹配桃熄,傳上來的參數(shù)由@RequestParam進行接收先口,映射到方法參數(shù)中。
? ? 事務(wù)注解
????????@Transactional與@TransactionalEventListener瞳收,前者為一些使用多條sql語句操作添加事務(wù)注解碉京,保證數(shù)據(jù)庫的一致性,不會有臟數(shù)據(jù)入庫螟深,后者是事務(wù)事件控制谐宙,比如可以在注冊事務(wù)后發(fā)送注冊成功郵件。
? ? 啟動器注解
? ??????@SpringBootApplication界弧,申明讓spring boot自動給程序進行必要的配置凡蜻,等價于以默認屬性使用@Configuration配置spring,@EnableAutoConfiguration開啟自動配置和@ComponentScan自動掃描垢箕。
? ? Eureka注冊中心相關(guān)注解
? ??????@EnableEurekaServer 啟動一個服務(wù)注冊中心划栓;@EnableDiscoveryclient 注冊應(yīng)用為Eureka客戶端應(yīng)用,以獲得服務(wù)發(fā)現(xiàn)的能力条获。這兩個都是加載啟動器上忠荞,聲明為注冊中心還是注冊中心注冊的其他服務(wù)。
? ? 配置中心相關(guān)注解
? ??????@EnableConfigServer 開啟配置服務(wù),在配置中心啟動器上申明委煤;@RefreshScope 刷新配置文件堂油,在配置文件交由配置中心管理的服務(wù)的控制器上申明。
? ? 其他注解
? ??????@Value(“${}”)可以注入配置文件里面的內(nèi)容素标,如yml文件下自定義test下的name屬性可以使用@Value("${test.name}")注解獲取称诗。
常用的 lombok 注解
? ??@Data 注解在類上;提供類所有屬性的 getting 和 setting 方法头遭,此外還提供了equals寓免、canEqual、hashCode计维、toString 方法
? ??@Log4j? 注解在類上袜香;為類提供一個 屬性名為log 的 log4j 日志對象