SpringBoot常見註解分類及解析

一:SpringBoot/Spring

SpringBoot/spring常見註解
註解 註解解析
@SpringBootApplication 該註解包含了@Configuration,@EnableAutoConfiguration以及@ComponentScan註解,通常使用在主類上。
@Repository 用戶標註數據庫訪問組件(接口),及DAO組件(接口)。
@Service 用於標註業務層組件。
@RestController 用於標註控制層組件(如Struts中的action),包含@Controlle以及@ResponseBody,請求相應的結果最終以Json格式返回。
@Controller 用於標註控制層組件,需要返回頁面時使用的註解。
@Component 泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註。
@ResponseBody 表示該方法的返回結果直接寫入HTTP response body中,一般在異步獲取數據時使用,在使用@RequestMapping後,返回值通常解析爲跳轉路徑。加上@ResponseBody後返回結果不會被解析爲跳轉路徑,而是直接寫入HttpResponseBody中,比如異步獲取Json數據時,加上@ResponseBody後,回直接返回json數據。
@RequestBody 參數前加上這個註解之後,默認參數必填。表示接受的json字符串轉爲對象。
@ComponentScan 組件掃描,如果存在@Component @Controller @Service等這些註解的累,被掃描後,就會將這些累註冊爲一個bean
@Bean 相當於在XML中,放在方法上並非類上,目的是產生一個bean,並交給Spring進行管理
@Configuration 指出該類是Bean的配置信息源,相當於在XML中,一般加載主類上。
@EnableAutoConfigration 讓SpringBoot根據應用所聲明的依賴來對Spring框架進行自動配置,一般加載主類上。
@AutoWired byType方式,把配置好的Bean拿來用,完成屬性,方法的組裝,它可以對類成員變量,方法及構造函數進行標註,完成自動裝配的工作;當加上(required = false)時,當某個用到的bean不存在也不會報錯。
@Qualifier 當有多個同一類型的Bean時,可以用@Qualifier("name")來指定。與@Autowired配合使用。
@Resource(name = "name", type = "type") 沒有括號中的內容時,默認時byName。與@Autowired完成類似的工作。
@RequestMapping

@RequestMapping是一個處理請求地址映射到註解,可用於類或方法上。當用在類上時,表示類中所有的響應請求的方法都是以該地址作爲父地址,及所有地址都包含這一部分。

該註解有六個屬性:

params: 指定request中必須包含某些參數值時,該方法才進行相應的處理。

headers: 指定request中必須包含某些指定的header值,才能夠讓該方法進行相應的處理。

value: 指定請求的實際地址,指定的地址可以是URI Template模式。

method: 指定請求的method類型,GET,POST,PUT,DELETE等。

consumes: 指定處理請求的提交內容類型(Content-Type)。如application/json,text/html等。

produces:指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回。

@GetMapping/@PostMapping

相當於@RequestMapping(value = “/” , method = RequestMethod.Get\Post\Put\Delete),它們時相應請求方式的組合註解

@RequestParam

用在方法的參數前面,相當於request.getParameter();請求路徑如:https://www.baidu.com?macAddress=b

public String getByMacAddress(
@RequestParam(“macAddress”) String macAddress){
//do something;
}

@PathVariable

同樣用在方法的參數前面,如RequestMapping(“user/get/mac/{macAddress}”) ;

public String getByMacAddress(
@PathVariable(“macAddress”) String macAddress){
//do something;
}

請求的路徑:https://www.baidu.com/user/get/mac/macAddress的值。

參數與大括號中的名字相同的話,註解後括號裏的內容可以不填。

二: JPA

JPA相關的註解
註解 註解的解釋

@Entity

@Table(name = " ")

這兩個註解一般一起使用來表明一個實體類,但是如果表名和實體類名相同的話,@Table可以省略。
@MappedSuperClass 用來確定父類的entity上,父類的屬性子類可以繼承。
@NoRepositoryBean 一般用作父類的repository,該註解是的spring不會去實例化該repository。
@Column 如果字段名與數據庫中列名相同,可以省略,如果不相同該註解指定字段名與數據庫列名之間的映射。
@Id 表示該屬性爲相對應表中的主鍵
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "repair_seq") 表明主鍵生成策略是sequence(可以爲Auto(表示多個數據庫之間切換),IDENTITY,native等),指定sequence的名字是repair_seq;
@SequenceGenerator(name = "repair_seq", sequenceName = "seq_repair" allocationSize = 1) name爲sequence的名稱,以便使用,sequenceName爲數據庫的sequence名稱,兩個名稱可以一致。
@Transient 表示該屬性並非一個到數據庫表的字段的映射,ORM框架就覅那個忽略該屬性,如果一個屬性並非數據庫表中的字段映射,就務必將其標識爲@Transient,否則,ORM框架默認其註解爲Basic
@Basic(fetch = FetchType.LAZY) 標記可以指定實體屬性的加載方式。
@JsonIgnore 作爲json序列化時將java bean中的一些屬性忽略掉,序列化和反序列化都受影響。
@JoinConlumn(name = "IoginId")

一對一:本表中指向另一個表的外鍵

一對多:另一個表指向本表的外鍵

@OneToOne

@OneToMany

@ManyToOne

對應Hibernate配置文件中的一對一,一對多,多對一

三:全局異常處理註解

全局異常處理註解
註解 註解解釋
@ControllerAdvice 包含@Component.可以被掃描到。捕獲controller層的異常進行統一處理;
@ExceptionHandler(Exception.class) 用在方法方法上表示遇到這個異常就會執行一下方法。

四:SpringCloud常用註解

SpringCloud常用註解
註解 註解解釋
@EnableEurekaServer 用在SpringBoot啓動類上,表示這是一個eureka服務註冊中心
@EnableDiscoveryClient 用在SpringBoot啓動類上,表示這是一個服務,可以在註冊中心找到
@LoadBalanced 開啓負載均衡能力
@EnableCircuitBreaker 用在啓動類上,開啓斷路器功能
@HystrixCommand(fallbackMethod = "backMethod") 用在方法上,fallbackMethod指定斷路回調方法
@EnableConfigServer

用在啓動類上,表示這是一個配置中心,開啓Config Server;

@EnableZuulProxy 開啓Zuul路由,用在啓動類上;
@SpringCloudApplication

包含了@SpringBootApplication/@EnableDiscovertyClient/@EnableCircuitBreaker

分別時SpringBoot註解,註冊服務中心Eureka註解,斷路器註解。對於SpringCloud來說,這是每一個微服務必須應用的三個註解,而SpringCloudApplication註解是三者的組合註解,能夠達到三者同等的效果。

總結:紅色字體表示不經常使用的但是我們應該瞭解到註解!

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