- @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寫法不同。
- 使用@RequestParam時,URL是這樣的:http://host:port/path?參數(shù)名=參數(shù)值
- 使用@PathVariable時,URL是這樣的:http://host:port/path/參數(shù)值
-
@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ù)庫移植。