天天看點

Springboot常用注解大全一

springboot注解:

1、@Service: 注解在類上,表示這是一個業務層bean

2、@Controller:注解在類上,表示這是一個控制層bean

3、@Repository: 注解在類上,表示這是一個資料通路層bean

4、@Component: 注解在類上,表示通用bean ,value不寫預設就是類名首字母小寫

5、@Autowired:按類型注入.預設屬性required= true;當不能确定 Spring 容器中一定擁有某個類的Bean 時, 可以在需要自動注入該類 Bean 的地方可以使用 @Autowired(required = false), 這等于告訴Spring:在找不到比對Bean時也不抛出BeanCreationException 異常。@Autowired 和 @Qualifier 結合使用時,自動注入的政策就從 byType 轉變byName 了。@Autowired可以對成員變量、方法以及構造函數進行注釋,而 @Qualifier 的标注對象是成員變量、方法入參、構造函數入參。正是由于注釋對象的不同,是以 Spring 不将 @Autowired 和 @Qualifier 統一成一個注釋類。

6、@Resource: 按名稱裝配

差別:

@Resource預設按照名稱方式進行bean比對,@Autowired預設按照類型方式進行bean比對

@Resource(importjavax.annotation.Resource;)是J2EE的注解,@Autowired(importorg.springframework.beans.factory.annotation.Autowired;)是Spring的注解

7、@Configuration:注解在類上,表示這是一個IOC容器,相當于spring的配置檔案,java配置的方式。 IOC容器的配置類一般與 @Bean 注解配合使用,用 @Configuration 注解類等價與 XML 中配置 beans,用@Bean 注解方法等價于 XML 中配置 bean。

8、@Bean: 注解在方法上,聲明目前方法傳回一個Bean

9、@Scope:注解在類上,描述spring容器如何建立Bean執行個體。

(1)singleton: 表示在spring容器中的單例,通過spring容器獲得該bean時總是傳回唯一的執行個體

(2)prototype:表示每次獲得bean都會生成一個新的對象

(3)request:表示在一次http請求内有效(隻适用于web應用)

(4)session:表示在一個使用者會話内有效(隻适用于web應用)

(5)globalSession:表示在全局會話内有效(隻适用于web應用)

在多數情況,我們隻會使用singleton和prototype兩種scope,如果未指定scope屬性,預設為singleton

10、@Value:注解在變量上,從配置檔案中讀取。

例如:@Value(value = “#{message}”)

11、@ConfigurationProperties   指派,将注解轉換成對象。給對象指派。車險項目:HttpClientSetting類

12、@Profile:注解在方法類上在不同情況下選擇執行個體化不同的Bean特定環境下生效!!!!!!!!!!!!!!!!!

13、@SpringBootApplication:@[email protected][email protected][email protected]:約定優于配置

14、@EnableAutoConfiguration啟用 Spring 應用程式上下文的自動配置,試圖猜測和配置您可能需要的bean。自動配置類通常采用基于你的classpath 和已經定義的 beans 對象進行應用。被 @EnableAutoConfiguration 注解的類所在的包有特定的意義,并且作為預設配置使用。通常推薦将 @EnableAutoConfiguration 配置在 root 包下,這樣所有的子包、類都可以被查找到。

15、@ComponentScan:注解在類上,掃描标注了@Controller等注解的類,注冊為bean 。@ComponentScan 為 @Configuration注解的類配置元件掃描指令。@ComponentScan 注解會自動掃描指定包下的全部标有 @Component注解的類,并注冊成bean,當然包括 @Component下的子注解@Service、@Repository、@Controller。 

16、@RestController @RestController 是一個結合了 @ResponseBody 和 @Controller 的注解

17、@Responsebody 注解表示該方法的傳回的結果直接寫入 HTTP 響應正文(ResponseBody)中,一般在異步擷取資料時使用,通常是在使用 @RequestMapping 後,傳回值通常解析為跳轉路徑,加上@Responsebody 後傳回結果不會被解析為跳轉路徑,而是直接寫入HTTP 響應正文中。

@RequestBody

@PathVariable

@RequestParam

兩者的作用都是将request裡的參數的值綁定到contorl裡的方法參數裡的,差別在于,URL寫法不同。

當請求參數username不存在時會有異常發生,可以通過設定屬性required=false解決,例如:

18、@RequestParam(value="username",required=false)

使用@RequestParam時,URL是這樣的:http://host:port/path?參數名=參數值

使用@PathVariable時,URL是這樣的:http://host:port/path/參數值

不寫的時候也可以擷取到參數值,但是必須名稱對應。參數可以省略不寫

19、@RequestMapping  和請求封包是做對應的   

  a:value,指定請求的位址 

  b:method 請求方法類型 這個不寫的話,自适應:get或者post

  c:consumes 請求的送出内容類型 

  d:produces 指定傳回的内容類型 僅當request請求頭中的(Accept)類型中包含該指定類型才傳回

  e: params 指定request中必須包含某些參數值 

  f:headers 指定request中必須包含指定的header值

g: name  指定映射的名稱  

 @RequestMapping(method = RequestMethod.GET)

 @RequestMapping(method = RequestMethod.POST)

 @RequestMapping(method = RequestMethod.PUT)

 @RequestMapping(method = RequestMethod.DELETE)

 當然也可以使用

 @GetMapping

 @PostMapping

 @PutMapping

 @DeleteMapping 這與上面的是一樣的效果

20、@EnablCaching @EnableCaching注解是spring framework中的注解驅動的緩存管理功能。自spring版本3.1起加入了該注解。如果你使用了這個注解,那麼你就不需要在XML檔案中配置cache manager了。

21、@suppresswarnings 抑制警告

22、@Modifying 如果是增,改,删加上此注解

1:方法的傳回值應該是int,表示更新語句所影響的行數。

2:在調用的地方必須加事務,沒有事務不能正常執行。@Transactional  事務注解

@Query 自定義查詢語句 JPQL

JPA注解

23、@Entity:

24、@Table(name=“”):注解在類上表明這是一個實體類。一般用于jpa這兩個注解一般一塊使用,但是如果表名和實體類名相同的話,@Table可以省略

25、@Column:通過@Column注解設定,包含的設定如下 

name:資料庫表字段名 

unique:是否唯一 

nullable:是否可以為空 

Length:長度

inserttable:是否可以插入 

updateable:是否可以更新 

columnDefinition: 定義建表時建立此列的DDL 

secondaryTable: 從表名。如果此列不建在主表上(預設建在主表),該屬性定義該列所在從表的名字。 

@Column(name = "user_code", nullable = false, length=32)//設定屬性userCode對應的字段為user_code,長度為32,非空     

private String userCode;     

@Column(name = "user_wages", nullable = true, precision=12,scale=2)//設定屬性wages對應的字段為user_wages,12位數字可保留兩位小數,可以為空     

private double wages;  

26、@Id:表示該屬性為主鍵。

27、@Temporal(TemporalType.DATE)//設定為時間類型     

private Date joinDate; 

28、@Transient:表示該屬性并非一個到資料庫表的字段的映射,ORM架構将忽略該屬性。如果一個屬性并非資料庫表的字段映射,就務必将其标示為@Transient,否則,ORM架構預設其注解為@Basic。@Basic(fetch=FetchType.LAZY):标記可以指定實體屬性的加載方式

29、@JsonIgnore:作用是json序列化時将Java bean中的一些屬性忽略掉,序列化和反序列化都受影響。

30、@JoinColumn(name=”loginId”):一對一:本表中指向另一個表的外鍵。一對多:另一個表指向本表的外鍵。

31、@OneToOne、@OneToMany、@ManyToOne:對應hibernate配置檔案中的一對一,一對多,多對一。

32、@GeneratedValue 用于标注主鍵的生成政策,通過 strategy 屬性指定。預設情況下,JPA 自動選擇一個最适合底層資料庫的主鍵生成政策:SqlServer 對應 identity,MySQL 對應 auto increment。 在 javax.persistence.GenerationType 中定義了以下幾種可供選擇的政策:

IDENTITY:采用資料庫 ID自增長的方式來自增主鍵字段,Oracle 不支援這種方式;

AUTO: JPA自動選擇合适的政策,是預設選項;

SEQUENCE:通過序列産生主鍵,通過 @SequenceGenerator 注解指定序列名,MySql 不支援這種方式

TABLE:通過表産生主鍵,架構借由表模拟序列産生主鍵,使用該政策可以使應用更易于資料庫移植。