springboot注解:
@Service:?注解在類上庐完,表示這是一個業(yè)務(wù)層bean
@Controller:注解在類上钢属,表示這是一個控制層bean
@Repository:?注解在類上,表示這是一個數(shù)據(jù)訪問層bean
@Component: 注解在類上门躯,表示通用bean?淆党,value不寫默認(rèn)就是類名首字母小寫
@Autowired:按類型注入.默認(rèn)屬性required= true;當(dāng)不能確定 Spring 容器中一定擁有某個類的Bean 時, 可以在需要自動注入該類 Bean 的地方可以使用 @Autowired(required = false)讶凉, 這等于告訴Spring:在找不到匹配Bean時也不拋出BeanCreationException 異常染乌。@Autowired 和 @Qualifier 結(jié)合使用時,自動注入的策略就從 byType 轉(zhuǎn)變byName 了懂讯。@Autowired可以對成員變量荷憋、方法以及構(gòu)造函數(shù)進(jìn)行注釋,而 @Qualifier 的標(biāo)注對象是成員變量域醇、方法入?yún)ⅰ?gòu)造函數(shù)入?yún)⑷叵薄U怯捎谧⑨寣ο蟮牟煌┲浚?Spring 不將 @Autowired 和 @Qualifier 統(tǒng)一成一個注釋類。@Resource: 按名稱裝配
區(qū)別:
@Resource默認(rèn)按照名稱方式進(jìn)行bean匹配酪呻,@Autowired默認(rèn)按照類型方式進(jìn)行bean匹配@Resource(importjavax.annotation.Resource;)是J2EE的注解减宣,@Autowired(importorg.springframework.beans.factory.annotation.Autowired;)是Spring的注解@Configuration:注解在類上,表示這是一個IOC容器玩荠,相當(dāng)于spring的配置文件漆腌,java配置的方式。 IOC容器的配置類一般與 @Bean 注解配合使用阶冈,用 @Configuration 注解類等價與 XML 中配置 beans闷尿,用@Bean 注解方法等價于 XML 中配置 bean。@Bean: 注解在方法上女坑,聲明當(dāng)前方法返回一個Bean
@Scope:注解在類上填具,描述spring容器如何創(chuàng)建Bean實例。
(1)singleton: 表示在spring容器中的單例匆骗,通過spring容器獲得該bean時總是返回唯一的實例
(2)prototype:表示每次獲得bean都會生成一個新的對象
(3)request:表示在一次http請求內(nèi)有效(只適用于web應(yīng)用)
(4)session:表示在一個用戶會話內(nèi)有效(只適用于web應(yīng)用)
(5)globalSession:表示在全局會話內(nèi)有效(只適用于web應(yīng)用)
在多數(shù)情況劳景,我們只會使用singleton和prototype兩種scope,如果未指定scope屬性碉就,默認(rèn)為singleton@Value:注解在變量上盟广,從配置文件中讀取。
例如:@Value(value = “#{message}”)
@ConfigurationProperties???賦值瓮钥,將注解轉(zhuǎn)換成對象筋量。給對象賦值烹吵。車險項目:HttpClientSetting類
@Profile:注解在方法類上在不同情況下選擇實例化不同的Bean特定環(huán)境下生效!C住D甓!!2D肌V凰稹!F哌帧T颈埂!0啊1妗!;壤O冉稀!悼粮!
@SpringBootApplication:@SpringBootApplication=@ComponentScan+@Configuration+@EnableAutoConfiguration:約定優(yōu)于配置
@EnableAutoConfiguration啟用 Spring?應(yīng)用程序上下文的自動配置闲勺,試圖猜測和配置您可能需要的bean。自動配置類通常采用基于你的classpath 和已經(jīng)定義的 beans 對象進(jìn)行應(yīng)用扣猫。被 @EnableAutoConfiguration 注解的類所在的包有特定的意義菜循,并且作為默認(rèn)配置使用。通常推薦將 @EnableAutoConfiguration 配置在 root 包下申尤,這樣所有的子包癌幕、類都可以被查找到。
@ComponentScan:注解在類上昧穿,掃描標(biāo)注了@Controller等注解的類勺远,注冊為bean 。@ComponentScan 為 @Configuration注解的類配置組件掃描指令时鸵。@ComponentScan 注解會自動掃描指定包下的全部標(biāo)有 @Component注解的類谚中,并注冊成bean,當(dāng)然包括 @Component下的子注解@Service寥枝、@Repository宪塔、@Controller。?
@RestController?@RestController?是一個結(jié)合了 @ResponseBody?和 @Controller 的注解
@Responsebody?注解表示該方法的返回的結(jié)果直接寫入 HTTP?響應(yīng)正文(ResponseBody)中囊拜,一般在異步獲取數(shù)據(jù)時使用某筐,通常是在使用 @RequestMapping 后,返回值通常解析為跳轉(zhuǎn)路徑冠跷,加上@Responsebody 后返回結(jié)果不會被解析為跳轉(zhuǎn)路徑南誊,而是直接寫入HTTP 響應(yīng)正文中身诺。
@RequestBody
@PathVariable
@RequestParam
兩者的作用都是將request里的參數(shù)的值綁定到contorl里的方法參數(shù)里的,區(qū)別在于抄囚,URL寫法不同霉赡。
當(dāng)請求參數(shù)username不存在時會有異常發(fā)生,可以通過設(shè)置屬性required=false解決,例如:
@RequestParam(value="username",required=false)
使用@RequestParam時,URL是這樣的:http://host:port/path?參數(shù)名=參數(shù)值
使用@PathVariable時幔托,URL是這樣的:http://host:port/path/參數(shù)值
不寫的時候也可以獲取到參數(shù)值穴亏,但是必須名稱對應(yīng)。參數(shù)可以省略不寫
@RequestMapping 和請求報文是做對應(yīng)的 a:value重挑,指定請求的地址? b:method 請求方法類型 這個不寫的話嗓化,自適應(yīng):get或者post c:consumes 請求的提交內(nèi)容類型? d:produces 指定返回的內(nèi)容類型 僅當(dāng)request請求頭中的(Accept)類型中包含該指定類型才返回 e: params 指定request中必須包含某些參數(shù)值? f:headers 指定request中必須包含指定的header值
g: name??指定映射的名稱 ?
?@RequestMapping(method = RequestMethod.GET)
?@RequestMapping(method = RequestMethod.POST)
?@RequestMapping(method = RequestMethod.PUT)
?@RequestMapping(method = RequestMethod.DELETE)
?當(dāng)然也可以使用
?@GetMapping
?@PostMapping
?@PutMapping
?@DeleteMapping?這與上面的是一樣的效果
@EnablCaching?@EnableCaching注解是spring framework中的注解驅(qū)動的緩存管理功能。自spring版本3.1起加入了該注解谬哀。如果你使用了這個注解刺覆,那么你就不需要在XML文件中配置cache manager了。
@suppresswarnings 抑制警告
@Modifying 如果是增史煎,改谦屑,刪加上此注解
1:方法的返回值應(yīng)該是int,表示更新語句所影響的行數(shù)篇梭。
2:在調(diào)用的地方必須加事務(wù)氢橙,沒有事務(wù)不能正常執(zhí)行。@Transactional? 事務(wù)注解
@Query?自定義查詢語句?JPQL
JPA注解
@Entity:
@Table(name=“”):注解在類上表明這是一個實體類很洋。一般用于jpa這兩個注解一般一塊使用充蓝,但是如果表名和實體類名相同的話隧枫,@Table可以省略
@Column:通過@Column注解設(shè)置喉磁,包含的設(shè)置如下?name:數(shù)據(jù)庫表字段名?unique:是否唯一?nullable:是否可以為空?
Length:長度inserttable:是否可以插入?updateable:是否可以更新?columnDefinition: 定義建表時創(chuàng)建此列的DDL?secondaryTable: 從表名。如果此列不建在主表上(默認(rèn)建在主表)官脓,該屬性定義該列所在從表的名字协怒。?@Column(name = "user_code", nullable = false, length=32)//設(shè)置屬性userCode對應(yīng)的字段為user_code,長度為32卑笨,非空?????private String userCode;?????@Column(name = "user_wages", nullable = true, precision=12,scale=2)//設(shè)置屬性wages對應(yīng)的字段為user_wages孕暇,12位數(shù)字可保留兩位小數(shù),可以為空?????private double wages;??
@Id:表示該屬性為主鍵赤兴。
@Temporal(TemporalType.DATE)//設(shè)置為時間類型?????private Date joinDate;?
@Transient:表示該屬性并非一個到數(shù)據(jù)庫表的字段的映射,ORM框架將忽略該屬性妖滔。如果一個屬性并非數(shù)據(jù)庫表的字段映射,就務(wù)必將其標(biāo)示為@Transient,否則,ORM框架默認(rèn)其注解為@Basic。@Basic(fetch=FetchType.LAZY):標(biāo)記可以指定實體屬性的加載方式
@JsonIgnore:作用是json序列化時將Java?bean中的一些屬性忽略掉,序列化和反序列化都受影響桶良。
@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。 在 javax.persistence.GenerationType 中定義了以下幾種可供選擇的策略:
IDENTITY:采用數(shù)據(jù)庫 ID自增長的方式來自增主鍵字段读虏,Oracle 不支持這種方式责静;
AUTO: JPA自動選擇合適的策略,是默認(rèn)選項盖桥;
SEQUENCE:通過序列產(chǎn)生主鍵灾螃,通過?@SequenceGenerator?注解指定序列名,MySql 不支持這種方式
TABLE:通過表產(chǎn)生主鍵揩徊,框架借由表模擬序列產(chǎn)生主鍵腰鬼,使用該策略可以使應(yīng)用更易于數(shù)據(jù)庫移植