spring boot 註解

springboot註解:

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

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

@Repository: 註解在類上,表示這是一個數據訪問層bean

@Component: 註解在類上,表示通用bean ,value不寫默認就是類名首字母小寫

@Autowired:按類型注入.默認屬性required= true;當不能確定 Spring 容器中一定擁有某個類的Bean 時, 可以在需要自動注入該類 Bean 的地方可以使用

@Autowired(required = false), 這等於告訴Spring:在找不到匹配Bean時也不拋出BeanCreationException 異常。

@Autowired 和 @Qualifier 結合使用時,自動注入的策略就從 byType 轉變byName 了。

@Autowired可以對成員變量、方法以及構造函數進行註釋,而 @Qualifier 的標註對象是成員變量、方法入參、構造函數入參。正是由於註釋對象的不同,所以 Spring 不將 @Autowired 和 @Qualifier 統一成一個註釋類。

@Resource: 按名稱裝配區別:@Resource默認按照名稱方式進行bean匹配,@Autowired默認按照類型方式進行bean匹配@Resource(importjavax.annotation.Resource;)是J2EE的註解,@Autowired(importorg.springframework.beans.factory.annotation.Autowired;)是Spring的註解@Configuration:註解在類上,表示這是一個IOC容器,相當於spring的配置文件,java配置的方式。 IOC容器的配置類一般與 @Bean 註解配合使用,用 @Configuration 註解類等價與 XML 中配置 beans,用@Bean 註解方法等價於 XML 中配置 bean。

@Bean: 註解在方法上,聲明當前方法返回一個Bean@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@Value:註解在變量上,從配置文件中讀取。例如:@Value(value = “#{message}”)

@ConfigurationProperties   賦值,將註解轉換成對象。給對象賦值。車險項目:HttpClientSetting類@Profile:註解在方法類上在不同情況下選擇實例化不同的Bean特定環境下生效!!!!!!!!!!!!!!!!!

@SpringBootApplication:@SpringBootApplication=@ComponentScan+@Configuration+@EnableAutoConfiguration:約定優於配置@EnableAutoConfiguration啓用 Spring 應用程序上下文的自動配置,試圖猜測和配置您可能需要的bean。自動配置類通常採用基於你的classpath 和已經定義的 beans 對象進行應用。被 @EnableAutoConfiguration 註解的類所在的包有特定的意義,並且作爲默認配置使用。通常推薦將 @EnableAutoConfiguration 配置在 root 包下,這樣所有的子包、類都可以被查找到。

@ComponentScan:註解在類上,掃描標註了@Controller等註解的類,註冊爲bean 。@ComponentScan 爲 @Configuration註解的類配置組件掃描指令。

@ComponentScan 註解會自動掃描指定包下的全部標有 @Component註解的類,並註冊成bean,當然包括 @Component下的子註解@Service、@Repository、@Controller。

@RestController @RestController 是一個結合了 @ResponseBody 和 @Controller 的註解@Responsebody 註解表示該方法的返回的結果直接寫入 HTTP 響應正文(ResponseBody)中,一般在異步獲取數據時使用,通常是在使用 @RequestMapping 後,返回值通常解析爲跳轉路徑,加上@Responsebody 後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP 響應正文中。

@RequestBody@PathVariable@RequestParam兩者的作用都是將request裏的參數的值綁定到contorl裏的方法參數裏的,區別在於,URL寫法不同。當請求參數username不存在時會有異常發生,可以通過設置屬性required=false解決,例如:@RequestParam(value="username",required=false)使用@RequestParam時,URL是這樣的:http://host:port/path?參數名=參數值使用@PathVariable時,URL是這樣的:http://host:port/path/參數值不寫的時候也可以獲取到參數值,但是必須名稱對應。參數可以省略不寫@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 這與上面的是一樣的效果 @EnablCaching @EnableCaching註解是spring framework中的註解驅動的緩存管理功能。自spring版本3.1起加入了該註解。如果你使用了這個註解,那麼你就不需要在XML文件中配置cache manager了。

@suppresswarnings 抑制警告@Modifying 如果是增,改,刪加上此註解1:方法的返回值應該是int,表示更新語句所影響的行數。2:在調用的地方必須加事務,沒有事務不能正常執行。

@Transactional  事務註解@Query 自定義查詢語句 JPQLJPA註解@Entity:@Table(name=“”):註解在類上表明這是一個實體類。一般用於jpa這兩個註解一般一塊使用,但是如果表名和實體類名相同的話,@Table可以省略@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;  

@Id:表示該屬性爲主鍵。

@Temporal(TemporalType.DATE)//設置爲時間類型     private Date joinDate;

@Transient:表示該屬性並非一個到數據庫表的字段的映射,ORM框架將忽略該屬性。如果一個屬性並非數據庫表的字段映射,就務必將其標示爲@Transient,否則,ORM框架默認其註解爲@Basic。

@Basic(fetch=FetchType.LAZY):標記可以指定實體屬性的加載方式@JsonIgnore:作用是json序列化時將Java bean中的一些屬性忽略掉,序列化和反序列化都受影響。

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

@OneToOne、@OneToMany、@ManyToOne:對應hibernate配置文件中的一對一,一對多,多對一。

@GeneratedValue 用於標註主鍵的生成策略,通過 strategy 屬性指定。默認情況下,JPA 自動選擇一個最適合底層數據庫的主鍵生成策略:SqlServer 對應 identity,MySQL 對應 auto increment。 在 javax.persistence.GenerationType 中定義了以下幾種可供選擇的策略:IDENTITY:採用數據庫 ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式;AUTO: JPA自動選擇合適的策略,是默認選項;SEQUENCE:通過序列產生主鍵,通過 @SequenceGenerator 註解指定序列名,MySql 不支持這種方式TABLE:通過表產生主鍵,框架藉由表模擬序列產生主鍵,使用該策略可以使應用更易於數據庫移植。
 

發佈了57 篇原創文章 · 獲贊 9 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章