日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JAVA_SpringBoot中涉及的注解

發(fā)布時間:2024/3/26 javascript 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA_SpringBoot中涉及的注解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

SpringBoot注解

動吧

new 對象是一個耗時的過程,
spring 是一個資源整合框架。

@SpringBootApplication

由此注解(@SpringBootApplication)描述的類為springBoot項目的啟動入口類

  • 1)springBoot項目的啟動入口只有一個
  • 2)springBoot項目的啟動入口需要使用(@SpringBootApplication)注解描述

@Component 交給Spring管理 是Spring中用于描述Bean類的一個注解。用于告訴Spring這個類的實例由Spring創(chuàng)建,當(dāng)此對象由Spring創(chuàng)建和管理時,默認(rèn)會將對象存儲到池(Bean池)中。

@Lazy 懶加載 注解用于描述類,其目的是告訴spring框架此類支持延遲加載,通常會配合單例作用域使用。

@Scope(value = “singleton”) = @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON) 默認(rèn)(單例)作用域,對象頻率高,存池Pool里

@Scope(“prototype”) 多例作用域,頻率低

@Autowired 注解描述屬性 ,用于告訴spring框架,此屬性注入一個值

@Autowired has a 關(guān)系 Dao–Controller

@SpringBootTest 注解用于告訴spring框架,此測試類交給spring管理

@PostConstruct 注解用于描述bean對象生命周期方法中的初始化方法,此方法會在對象的構(gòu)造方法之后執(zhí)行(是對象創(chuàng)建以后的初始化)。

@PreDestroy 注解用于描述Bean對象生命周期方法中的銷毀方法,此方法會在對象銷毀之前執(zhí)行(當(dāng)作用域為prototype時,此方法不會執(zhí)行)。

Dependent lookup

@Component

Component默認(rèn)是單例的
@Scope(“prototype”)設(shè)為多例
帶此注解的類看為組件,當(dāng)使用基于注解的配置和類路徑掃描的時候,這些類就會被實例化
這個值可能作為邏輯組件(即類)的名稱,在自動掃描的時候轉(zhuǎn)化為spring bean,即相當(dāng)中的id

@Service

@Controller

@RequestMapping("/goods/")

自定義注解 @Retention @Target

  • @Retention 用于描述注解何時有效,例如RUNTIME就表示運行時有效
  • @Target 用于描述注解可以描述哪些對象?例如Type表示注解可以描述類和接口

@ResponseBody

//作用1。將對象轉(zhuǎn)換為JSON 2.如果返回值是String類型,則返回字符串本身 3.一般客戶端發(fā)起ajax請求時,采用該注解返回數(shù)據(jù),將不會執(zhí)行試圖解析操作

//方法返回值為對象(不包字符串,直接量如Long id),spring mvc 可以將其轉(zhuǎn)換為JSON格式的字符串
//spring mvc 框架底層默認(rèn)會使用jackson API將對象轉(zhuǎn)化為json格式的字符串
返回客戶端數(shù)據(jù) 為JSON格式的字符串
JSON 屬于一種數(shù)據(jù)結(jié)構(gòu) {“key1”:“value1”,“key2”:“value2”,…}

@RestController == @Controller + @ResponseBody

Repository

@Mapper

注解由mybatis框架定義,用于描述數(shù)據(jù)層接口對象,系統(tǒng)底層啟動mybatis框架注解的描述,創(chuàng)建其接口實現(xiàn)類,并將實現(xiàn)類對象交給spring管理

@MapperScan(“con.tedu.mapper”)

掃描該包下的所有mapper類作為Mapper映射文件
mapper包多時使用

@Param 于SpringBoot項目,及執(zhí)行動態(tài)SQL語句

int deleteByIds(@Param(“ids”) Integer…ids );
用來傳多個參數(shù)
給mybaties的數(shù)據(jù)起別名(傳參時的別名字段)

@Table

對應(yīng)數(shù)據(jù)庫的表,如果不寫默認(rèn)是類名首字母小寫作為表名,比Member,不寫數(shù)據(jù)庫表默認(rèn)指向member

@Column

的屬性name對應(yīng)數(shù)據(jù)庫表的字段,如果不寫默認(rèn)是駝峰下劃線匹配,比如private Long myId,如果不寫得話,就是對應(yīng)數(shù)據(jù)庫表字段my_id

@Id:

把當(dāng)前字段作為數(shù)據(jù)庫主鍵使用,匹配數(shù)據(jù)庫主鍵。如果不貼此注解,在某些查詢語句的時候會把表字段一起作為聯(lián)合主鍵查詢

@GeneratedValue

讓通用mapper在執(zhí)行insert操作之后將自動生成的主鍵值回寫到當(dāng)前實體對象對應(yīng)的屬性當(dāng)中

LOMBOK 下注解

@Data // getter、setter 提供了 equals()、hashCode()、toString() 方法

@AllArgsConstructor // 全參構(gòu)造方法

@NoArgsConstructor // 無參構(gòu)造方法

@Accessors(chain = true) // 鏈?zhǔn)骄幊虒懛?既可以注解在類上也可以注解在屬性上

@ControllerAdvice 注解描述的類,spring mvc 會認(rèn)為它是一個控制層全局異常處理對象

@RestControllerAdvice == @ControllerAdvice + @ResponseBody

@ExceptionHandler (RuntimeException.class) 注解描述的方法為異常處理方法

此注解中定義的異常類型,為這個方法可以處理的異常類型, 它可以處理此 異常以及這個異常類型的子類類型的異常

@PathVariable 注解用于從rest風(fēng)格的url中取和參數(shù)對應(yīng)的值

rest風(fēng)格(一種架構(gòu)風(fēng)格)的url 其語法結(jié)構(gòu){變量名}/{變量}

指定日期 客戶端----->數(shù)據(jù)庫 @DateTimeFormat(pattern = “yyyy/MM/dd HH:mm”) set方法

@JsonFormat(pattern = “yyyy/MM/dd HH:mm:ss”,timezone = “GMT+8”) //此注解用于描述屬性或get方法

@Aspect 注解描述的類型為spring AOP中的切面類型。@Order(1) @Order(2) 數(shù)字越小優(yōu)先級越高,默認(rèn)優(yōu)先級比較低。 此對象中可以封裝:

1.切入點(定義在哪些目標(biāo)方法上進行功能擴展)
2.通知(封裝功能擴展的業(yè)務(wù)邏輯 )
用于標(biāo)識或者描述AOP中的切面類型,基于切面類型構(gòu)建的對象用于為目標(biāo)對象進行功能擴展或控制目標(biāo)對象的執(zhí)行。

@Slf4j 日志 import lombok.extern.slf4j.Slf4j;

@Pointcut 注解用于定義切入點,具體方式可以基于特定表達式進行實現(xiàn) bean within excution @annotation

1.bean 為一種切入點表達式類型2.sysUserServiceImpl 為spring容器中的一個名字,并首字母小寫涵義:sysUserServiceImpl對象中的任意方法執(zhí)行時,都由本切面對象的通知方法做功能增強 @Pointcut("bean(sysUserServiceImpl)")public void doLogPointcut() {} //方法不寫代碼 ,只為注解提供環(huán)境

1.bean 用于匹配指定bean對象的所有方法
? bean(“userServiceImpl”)指定一個userServiceImpl類中所有方法。
? bean("*ServiceImpl")指定所有后綴為ServiceImpl的類中所有方法。

2.within 用于匹配指定包下所有類內(nèi)的所有方法
? within(“aop.service.UserServiceImpl”)指定當(dāng)前包中這個類內(nèi)部的所有方法。
? within(“aop.service.") 指定當(dāng)前目錄下的所有類的所有方法。
? within("aop.service…”) 指定當(dāng)前目錄以及子目錄中類的所有方法。

3.excution 用于按指定語法規(guī)則匹配到具體方法
語法:execution(返回值類型 包名.類名.方法名(參數(shù)列表))。
? execution(void aop.service.UserServiceImpl.addUser())匹配addUser方法。
? execution(void aop.service.PersonServiceImpl.addUser(String)) 方法參數(shù)必須為String的addUser方法。
? execution(* aop.service….(…)) 萬能配置。

@annotation 用于匹配指定注解修飾的方法
? @annotation(anno.RequiredLog) 匹配有此注解描述的方法。
? @annotation(anno.RequiredCache) 匹配有此注解描述的方法。

@Around 環(huán)繞通知:使用切入點為bean(sysUserServiceImpl)

用于描述切面中方法,這樣的方法會被認(rèn)為是一個環(huán)繞通知(核心業(yè)務(wù)方法執(zhí)行之前和之后要執(zhí)行的一個動作),@Aournd注解內(nèi)部value屬性的值為一個切入點表達式或者是切入點表達式的一個引用(這個引用為一個@PointCut注解描述的方法的方法名)。

特點:

1.編寫
* 1.1.方法的返回值為Object* 1.2.方法參數(shù)為ProceedingJoinPoint類型 連接點類型,此類型的對象用于封裝要執(zhí)行的目標(biāo)方法相關(guān)的一些信息。一般用于@Around注解描述的方法參數(shù)。* 1.3.方法拋出異常為throwable
2.應(yīng)用
* 2.1.目標(biāo)方法執(zhí)行之前或之后都可以進行功能拓展* 2.2.相對于其他通知優(yōu)先級最高* @param ProceedingJoinPoint 為一個連接對象(封裝了正在執(zhí)行的目標(biāo)方法信息)* @return 目標(biāo)方法的返回值* @throws Throwable @Around("doLogPointcut()")public Object around(ProceedingJoinPoint jp)throws Throwable{log.info("method start {}",System.currentTimeMillis()); //開始try {Object result = jp.proceed();//最終會執(zhí)行目標(biāo)方法log.info("method end {}",System.currentTimeMillis()); //結(jié)束return result;} catch (Throwable e) {e.printStackTrace();log.error("method error {}",System.currentTimeMillis()); //錯誤throw e;}

通知注解

@Pointcut

@Around

@Around.Before

@Before

@AfterReturning 核心業(yè)務(wù)正常

@AfterThrowing 核心業(yè)務(wù)出現(xiàn)異常

@After 不管是否正確都執(zhí)行

@Around.After

Cache 緩存注解

@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD,ElementType.TYPE}) @Target(ElementType.METHOD)

自定義注解:(使用@interface定義注解,默認(rèn)所以注解都 繼承 is a Annotation類型的對象)
@Target 注解用于告訴jdk我們自己寫的注解描述的對象
@author MTA 注解用于告訴jdk我們自己寫的注解何使有效
說明:所有的注解都是一種元素?fù)?jù)(Menta Data)一種描述數(shù)據(jù)的數(shù)據(jù)(例如 使用注解描述類,描述方法,描述屬性,描述方法參數(shù)等等)

@Transactiona spring 事務(wù)

當(dāng)使用該注解表示所有方法都要進行事務(wù)控制,類上使用@Transactional注解用于定義方法上的事務(wù)共性,假如還有事務(wù)特性可以在對應(yīng)的方法上繼續(xù)使用@Transactional注解定義事務(wù)特性

@Transactional(readOnly = true) 之應(yīng)用于查詢方法
@Transactional(readOnly = false) 用于添加修改刪除

@Transactional(readOnly = false,

rollbackFor = RuntimeException.class, 回滾 noRollbackFor = MyBatisSystemException.class)

@Transactional(readOnly = false,

rollbackFor = Throwable.class,timeout = 10, 超時isolation = Isolation.READ_COMMITTED) 事務(wù)特性 臟讀 幻讀 重復(fù)讀 propagation = Propagation.REQUIRES_NEW) pa b gai seng * 表示寫日志的操作始終會運行在一個獨立的事務(wù)中

@Async //異步 執(zhí)行業(yè)務(wù)方法 @Async //注解描述的方法會運行在由spring框架提供的一個線程中。

@EnableAsync //異步 啟動spring框架中的異步操作(底層會創(chuàng)建一個線程池)

@EnableCaching //啟動Cache 緩存

@Cacheable(value = “menuCache”) //menuCache為緩存對象的名稱 保存緩存

@CacheEvict(value = “menuCache”,allEntries = true,beforeInvocation = false) 清除緩存 清除所有 方法執(zhí)行后

@Configuration 注解描述的類為一個配置對象,

此對象也會交給spring管理

@Bean 通常會配置@Configuration注解進行使用,其特點:

1.此注解描述方法會交給spring管理2.@Beean注解沒有指定其value屬性的值,則bean的名字默認(rèn)為方法名

@RequiresPermissions 這個注解描述的方法為一個切入點方法 .@RequiresPermissions(value=“sys:user:valid”)//value可以省略

此方法在執(zhí)行之前需要進行權(quán)限檢測(負(fù)責(zé)這個過程的方法是一個通知方法),假如用戶權(quán)限中包含 @RequiresPermissions 注解value屬性指定的值,則授權(quán)訪問,不包含則拋出異常

京淘

@PropertySource

//動態(tài)的導(dǎo)入pro配置文件,交給spring容器進行加載

@PropertySource("classpath:/properties/redis.properties")

// :后 / 根目錄是resources properties\redis.properties lunx中只有正斜杠

@Value("${redis.host}")

//spel(spring EL)表達式

lombok

@Accessors(chain = true) import lombok.experimental.Accessors;

//鏈?zhǔn)郊虞d

User user = new User();// user.getId();user.setId(100).setName("ssss");

@Data

@Accessors(chain = true) //鏈?zhǔn)郊虞d

@NoArgsConstructor //添加無參構(gòu)造

@AllArgsConstructor //添加全參構(gòu)造

@MapperScan(“com.jt.dao”)

//主要告訴Mapper的包路經(jīng),會自動的完成包掃描
不用再每個DAO類上添加注解@Mapper
DAO類中再添加注解@Mapper 不會影響程序正常運行

Mybaties-puls 中對對象pojo的注解

@TableName(“user”) //user可以省略

//將表與對象 進行一一對應(yīng)

@TableId(type = IdType.AUTO)

//主鍵的信息 設(shè)定自增

@TableField(value = “name”)

//如果字段名稱與屬性的名稱一致(包含駝峰規(guī)則映射),可以省略不寫

總結(jié)

以上是生活随笔為你收集整理的JAVA_SpringBoot中涉及的注解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。