spring-cloud開發常用注解
SpringCloud常用注解總結:
@Controller 控制層,里面有多個連接
@Service 業務層,一般對于接口和實現
@Qualifier 如果一個接口有多個實現,那么注入時候加上唯一標示
@Repository 一般的dao層
@Autowired 自動注入依賴
@Resource bean的注入,同Autowired 有相同的功能。
說明:
共同點:@Resource和@Autowired都可以作為注入屬性的修飾,在接口僅有單一實現類時,兩個注解的修飾效果相同,可以互相替換,不影響使用。
不同點:
@Resource是Java自己的注解,@Resource有兩個屬性是比較重要的,分別是name和type;Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。
@Autowired是spring的注解,是spring2.5版本引入的,Autowired只根據type進行注入,不會去匹配name。如果涉及到type無法辨別注入對象時,那需要依賴@Qualifier或@Primary注解一起來修飾。
@Component定義其它組件(比如訪問外部服務的組件)
@RequestMapping (value=’’,method={RequestMethod。GET或者POSt})綁定url
@RequestParam (value=’’ required=false)綁定參數,將客戶端請求中的參數值映射到相應方法的參數上;
@ModelAttribute 一般用于controller層,被注解的方法會在所以mapping執行之前執行,并且可以綁定參數到Model model里面。
@Transactional (readOnly=true)注解式事務
@TransactionalEventListener用于配置事務的回調方法,可以在事務提交前、提交后、完成后以及回滾后幾個階段接受回調事件。
@Value(“${}”)可以注入properties里面的配置項
@ControllerAdvice 是spring3提供的新注解
@ExceptionHandler 如果在controller方法遇到異常,就會調用含有此注解的方法。
@InitBinder 一般用于controller 可以將所以form 講所有傳遞進來的string 進行html編碼,防止xss攻擊,比如可以將字符串類型的日期轉換成date類型
@EnableCaching 注解自動化配置合適的緩存管理器。
@EnableWebSecurity 注解開啟spring security的功能,集成websercrityconfigureadapter。
@SringBootApplication相當于@configuration,@EnableAutoConfiguation @ComponentScan三個注解合用。
@EnableDiscoveryclient 注冊應用為Eureka客戶端應用,以獲得服務發現的能力
@EnableAdminServer 使用admin監控應用。
@EnableEurekaClient配置本應用將使用服務注冊和服務發現,注意:注冊和發現用這個注解。
@EnableEurekaServer 啟動一個服務注冊中心
@EnableHystrix表示啟動斷路器,斷路器依賴于服務注冊和發現。
@HystrixCommand注解方法失敗后,系統將西東切換到fallbackMethod方法執行。指定回調方法
@EnableAutoConfiguration spring boot自動配置,嘗試根據你添加的jar依賴自動配置你的spring應用。
@ComponentScan 表示將該類自動發現并注冊bean 可以自動收集所有的spring組件
@Comfiguration 相當于傳統的xml配置文件
@Import 導入其他配置類
@ImportResource用來 加載xml配置文件
@FeignClient注解中的fallbank屬性指定回調類
@RestController 返回json字符串的數據,直接可以編寫RESTFul的接口;
@CrossOrigin 可以處理跨域請求,讓你能訪問不是一個域的文件;
@ApiOperation 首先@ApiOperation注解不是Spring自帶的,它是是swagger里的注解@ApiOperation是用來構建Api文檔的@ApiOperation(value = “接口說明”, httpMethod = “接口請求方式”, response = “接口返回參數類型”, notes = “接口發布說明”;
@SpringBootApplication 申明讓spring boot自動給程序進行必要的配置,等價于以默認屬性使用@Configuration,@EnableAutoConfiguration和@ComponentScan;
@RefreshScope 如果代碼中需要動態刷新配置,在需要的類上加上該注解就行。但某些復雜的注入場景下,這個注解使用不當,配置可能仍然不動態刷新;
@FeignClient springboot調用外部接口:聲明接口之后,在代碼中通過@Resource注入之后即可使用。@FeignClient標簽的常用屬性如下:name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務的名稱,用于服務發現
url: url一般用于調試,可以手動指定@FeignClient調用的地址decode404:當發生http 404錯誤時,如果該字段位true,會調用decoder進行解碼,否則拋出FeignException
configuration: Feign配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contractfallback: 定義容錯的處理類,當調用遠程接口失敗或超時時,會調用對應接口的容錯邏輯,fallback指定的類必須實現@FeignClient標記的接口
fallbackFactory: 工廠類,用于生成fallback類示例,通過這個屬性我們可以實現每個接口通用的容錯邏輯,減少重復的代碼path: 定義當前FeignClient的統一前綴
@EnableFeignClients 開啟Spring Cloud Feign的支持
@EnableCircuitBreaker 開啟斷路器功能
@LoadBalanced 開啟客戶端負載均衡
@WebAppConfiguration 開啟Web 應用的配置,用于模擬ServletContext
@RibbonClient,這個注解用來為負載均衡客戶端做一些自定義的配置,可以進一步配置或自定義從哪里獲取服務端列表、負載均衡策略、Ping也就是服務鑒活策略等等
@PathVariable ? 獲取參數。
@JsonBackReference ?解決嵌套外鏈問題。
@RepositoryRestResourcepublic ?配合spring-boot-starter-data-rest使用
常用的 lombok 注解:
@EqualsAndHashCode ? 實現equals()方法和hashCode()方法 @ToString:實現toString()方法
@Data ?注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法
@Setter 注解在屬性上;為屬性提供 setting 方法
@Getter 注解在屬性上;為屬性提供 getting 方法
@Log4j 注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象
@NoArgsConstructor 注解在類上;為類提供一個無參的構造方法
@AllArgsConstructor?? ??? ? 注解在類上;為類提供一個全參的構造方法
@Cleanup ? ?關閉流
@Synchronized:?? ??? ??? ? 對象同步
@SneakyThrows:?? ??? ??? ? 拋出異常
@ConfigurationProperties 把同類的配置信息自動封裝成實體類:可以使屬性文件中的值和類中的屬性對應起來;使用方式有兩種 : 1、在類上使用該注解 2、在工廠方法上使用該注解 (@bean)
注意:在springBoot中除了使用這個注解讀取屬性文件值外,還可以用@Value注解。
JPA注解:
1、@Entity:@Table(name=”“):表明這是一個實體類。一般用于jpa這兩個注解一般一塊使用,但是如果表名和實體類名相同的話,@Table可以省略。
2、@MappedSuperClass:用在確定是父類的entity上。父類的屬性子類可以繼承。
3、@NoRepositoryBean:一般用作父類的repository,有這個注解,Spring不會去實例化該repository。
4、@Column:如果字段名與列名相同,則可以省略。
5、@Id:表示該屬性為主鍵。
6、@GeneratedValue(strategy=GenerationType.SEQUENCE,generator= ? ?“repair_seq”):表示主鍵生成策略是sequence ?(可以為Auto、IDENTITY、native等,Auto表示可在多個數據庫間切換),指定sequence的名字是repair_seq。
7、@SequenceGeneretor(name = “repair_seq”, sequenceName = ? ?“seq_repair”, allocationSize =
1):name為sequence的名稱,以便使用,sequenceName為數據庫的sequence名稱,兩個名稱可以一致。
8、@Transient:表示該屬性并非一個到數據庫表的字段的映射,ORM框架將忽略該屬性。
如果一個屬性并非數據庫表的字段映射,就務必將其標示為@Transient,否則,ORM框架默認其注解為@Basic。
9、@Basic(fetch=FetchType.LAZY):標記可以指定實體屬性的加載方式。
10、@JsonIgnore:作用是json序列化時將Java bean中的一些屬性忽略掉,序列化和反序列化都受影響。
11、@JoinColumn(name=”loginId”):一對一:本表中指向另一個表的外鍵。一對多:另一個表指向本表的外鍵。
12、@OneToOne、@OneToMany、@ManyToOne:對應hibernate配置文件中的一對一,一對多,多對一。
Java Spring
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。