SpringBoot常用注解

  • @Controller:注解在類上,表示這是一個控制層bean。
  • @Service: 注解在類上,表示這是一個業(yè)務(wù)層bean。
  • @Repository: 注解在類上,表示這是一個數(shù)據(jù)訪問層bean。
  • @Autowired:按類型注入,默認(rèn)屬性required= true;當(dāng)不能確定 Spring 容器中一定擁有某個類的Bean 時, 可以在需要自動注入該類 Bean 的地方可以使用 @Autowired(required = false), 這等于告訴Spring:在找不到匹配Bean時也不拋出BeanCreationException 異常。
  • @Scope:注解在類上,描述spring容器如何創(chuàng)建Bean實(shí)例。
    • singleton: 表示在spring容器中的單例,通過spring容器獲得該bean時總是返回唯一的實(shí)例
    • prototype:表示每次獲得bean都會生成一個新的對象
    • request:表示在一次http請求內(nèi)有效(只適用于web應(yīng)用)
    • session:表示在一個用戶會話內(nèi)有效(只適用于web應(yīng)用)
    • globalSession:表示在全局會話內(nèi)有效(只適用于web應(yīng)用)

在多數(shù)情況,我們只會使用singleton和prototype兩種scope,如果未指定scope屬性,默認(rèn)為singleton。

  • @Value:注解在變量上,從配置文件(yml或properties文件)中讀取。例如:@Value(“${message}”)

  • @ConfigurationProperties 從配置文件(yml或properties文件)中讀取屬性并賦值給實(shí)體類中對應(yīng)的名字相同的屬性。

  • @Bean: 注解在方法上,聲明當(dāng)前方法返回一個Bean。

  • @ComponentScan:注解在類上,會自動掃描指定包下的全部標(biāo)有 @Component注解的類,并注冊成bean,當(dāng)然包括 @Component下的子注解@Service、@Repository、@Controller。

  • @Configuration:注解在類上,表示這是一個IOC容器,相當(dāng)于spring的配置文件,java配置的方式。 IOC容器的配置類一般與 @Bean 注解配合使用,用 @Configuration 注解類等價與 XML 中配置 beans,用@Bean 注解方法等價于 XML 中配置 bean。

  • @RestController 是一個結(jié)合了 @ResponseBody 和 @Controller 的注解。

  • @Responsebody 注解表示該方法的返回的結(jié)果直接寫入 HTTP 響應(yīng)正文(ResponseBody)中。

  • @PathVariable @RequestParam :兩者的作用都是將request里的參數(shù)的值綁定到contorl里的方法參數(shù)里的,區(qū)別在于,URL寫法不同。

  • @RequestMapping:和請求報文是做對應(yīng)的

    • value,指定請求的地址
    • method 請求方法類型 這個不寫的話,自適應(yīng):get或者post
    • consumes 請求的提交內(nèi)容類型
    • produces 指定返回的內(nèi)容類型 僅當(dāng)request請求頭中的(Accept)類型中包含該指定類型才返回
    • params 指定request中必須包含某些參數(shù)值
    • headers 指定request中必須包含指定的header值
  • 也可以使用下面的注解:

    • @GetMapping
    • @PostMapping
    • @PutMapping
    • @DeleteMapping

JPA注解

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

  • @Column:通過@Column注解設(shè)置,包含的設(shè)置如下:

    • name:數(shù)據(jù)庫表字段名
    • unique:是否唯一
    • nullable:是否可以為空
  • @Id:表示該屬性為主鍵。

  • @Transient:表示該屬性并非一個到數(shù)據(jù)庫表的字段的映射,ORM框架將忽略該屬性。即不會生成字段于數(shù)據(jù)表。

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

  • @OneToOne、@OneToMany、@ManyToOne:對應(yīng)hibernate配置文件中的一對一,一對多,多對一。

  • @GeneratedValue 用于標(biāo)注主鍵的生成策略,通過 strategy 屬性指定。默認(rèn)情況下,JPA 自動選擇一個最適合底層數(shù)據(jù)庫的主鍵生成策略:SqlServer 對應(yīng) identity,MySQL 對應(yīng) auto increment。 還有以下幾種策略可以選擇:

    • IDENTITY:采用數(shù)據(jù)庫 ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式。
    • AUTO: JPA自動選擇合適的策略,是默認(rèn)選項(xiàng)。
    • SEQUENCE:通過序列產(chǎn)生主鍵,通過 @SequenceGenerator 注解指定序列名,MySql 不支持這種方式。
    • TABLE:通過表產(chǎn)生主鍵,框架借由表模擬序列產(chǎn)生主鍵,使用該策略可以使應(yīng)用更易于數(shù)據(jù)庫移植。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容