元注解(用來修飾注解的注解)
@Target(ElementType.) 注解對誰有效
取值(ElementType)有:
1.CONSTRUCTOR:用于描述構造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述區域變數
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述引數
7.TYPE:用于描述類、介面(包括注解型別)或enum宣告
@Retention(RetentionPolicy.) 注解的生命周期
取值(RetentionPoicy)有:
1.SOURCE:在源檔案中有效(即源檔案保留)
2.CLASS:在class檔案中有效(即class保留)
3.RUNTIME:在運行時有效(即運行時保留)
@Documented 是否需要動態生成檔案
@Inherited 是否可以被繼承
SpringMVC注解
@Mapper 描述資料層 (Mapper/Dao)
@Service 描述業務層 (Service)
@Repository 標識持久層組件
@Component 可以描述各種組件
@RestController 描述控制層(Controller)并回傳json資料型別,但不會再執行SpringMVC中的視圖決議器,
該注解等同于:@Controller + @ResponseBody
@Controller 描述控制層 接收用戶請求 執行視圖決議器(進行路徑拼接 前綴+后綴)跳轉,
@ResponseBody 將java物件轉為json格式的資料,
這些注解描述的類 Spring會創建原生物件或代理物件并交給IOC容器管理,這些物件稱之為bean,用時直接 @Autowired注入即可
IOC容器管理注解
@Bean 描述 方法 的回傳值 交給容器管理,不需要再手動呼叫該方法,
注入的物件 IOC只能管理一個,否則會出現例外,
@Autowired 注入物件,
@Value 注入普通型別屬性,
@Qualifier 按名稱的注入 配合@Autowired 使用,
Bean的范圍的注解:
@Scope(value="") 默認生成的類是單例的,
取值(value) 有:
1.singleton :單例
2.prototype :多例
3.request :request域,需要在web環境
4.session :session域,需要在web環境
5.application: context域,需要在web環境
6.globalsession 集群環境的session域,需要在web環境
Bean的生命周期注解:
@PostConstruct 相當于init-method
@PreDestroy 相當于destroy-method
Spring啟動類注解(開箱即用):
只需要匯入簡單的jar包檔案,就可以實作對應的功能,無需(少量)繁瑣的配置.
@SpringBootAppliction 用在啟動類上,主要目的是開啟自動配置 組合了:
1)@SpringBootConfiguration 定義了SpringBoot的配置類 通過@Configuration 來定義配置資訊
2)@EnableAutoConfiguration 自動化配置, 該注解里面有@AutoConfigurationPackage 自動配置的包掃描 @Import呼叫選擇器去加載pom.xml檔案中的啟動項
3)@ComponentScan 定義包掃描 指定哪些包中的物件交給IOC容器管理,
Mapping映射
@RequestMapping("/xxx") 注解類上 通過"/xxx"來指定控制器可以處理哪些URL請求,
請求方式:
@GetMapping 通常注解查詢方法 安全性差
@PutMapping 通常注解更新方法
@PostMapping 通常注解增添保存方法
@DeleteMapping 通常注解洗掉方法
動態賦值注解
@PathVariable 接收的url動態傳給被注解的引數(restFull風格)
@RequestBody 將接收的json格式的資料轉為java物件引數
@RequestParam(value=“接收的xxx”) 講接收的xxx傳給注解的引數 接受請求引數型別
AOP切面
@Pointcut("@annotation(被切入方法的地址)") 設定切入點
@Before(“pointCut()”) 在切點方法前執行
@After(“pointCut()”) 在切點方法后執行
@Around(“pointCut()”) 在切點方法外環繞執行,需要執行ProceedingJoinPoint物件的proceed方法來加載需要切入的方法,
Lombok 插件
@Data 動態添加get/set/toString/equals/hashcode/構造方法 適用于pojo / VO該注解等同于:
@Getter + @Setter + ToString + @EqualsAndHashCode +
@RequiredArgsConstructor
@Value 把所有的變數都設成 final 修飾 和 @Data相似
@AllArgsConstructor 添加構造方法
@NoArgsConstructor 添加無參構造
@sfl4g 自動生成該類的 log 靜態常量
@Accessors(chain = true) 參考鏈式加載方式 方便做插入操作
MybatisPlus 注解
@TableName(value="", resultMap="") 表名與物體類名不一致時 需要在物體類名稱上加入注解"value=表名",xml 中 resultMap 的 id 不一致時需要賦值,
@TableId(value= “”, type = IdType.AUTO) 表示主鍵名/屬性, @IdType的值有:
AUTO 資料庫自增
INPUT 自行輸入
ID_WORKER 分布式全域唯一ID 長整型型別
UUID 32位UUID字串
NONE 無狀態
ID_WORKER_STR 分布式全域唯一ID 字串型別
@TableField("…") 注解新增屬性,如果欄位名與屬性一致(已開啟駝峰規則),則可省略,否則加入"exist=false"引數,
shiro框架
Shiro 提供了相應的注解用于權限控制,如果使用這些注解就需要使用AOP 的功能來進行判斷
@RequiresAuthentication 表示當前Subject已經通過login 進行了身份驗證,即Subject. isAuthenticated()回傳true,
@RequiresGuest 表示當前Subject沒有身份驗證或通過記住我登錄過,即是游客身份,
@RequiresUser 表示當前Subject已經身份驗證或者通過記住我登錄的,
@RequiresRoles
(value={“admin”, “user”}, logical= Logical.AND)
表示當前Subject需要角色admin 和user,value表示需要判斷的角色,logical表示判斷條件,
@RequiresPermissions
(value={“user:a”, “user:b”}, logical= Logical.OR)
表示當前Subject需要權限user:a或user:b,value表示需要判斷的角色,logical表示判斷條件,
快取注解
@EnableCaching 啟動springboot工程中的內置快取,
@Cacheable(“快取值取名”) 快取應用的切入點方發,把回傳值快取,
@CacheEvict(value="…") 方法是一個清快取的切入點方法,value屬性值表示要清除的快取,
Async異步注解
@Async 注解描述的方法為一個異步切入點方法(宣告該方法執行異步),啟動類上需要加上@EnableAsync才能使其生效,
這個方法會在切面通知方法中通過一個新的執行緒呼叫執行,由spring執行緒池提供,
@EnableAsync 可以使用多執行緒 描述該類支持異步
注釋注解
@param Dao層(Mapper)的注解,作用是用于傳遞多個引數
@return 說明該方法有回傳值,只是起到一個說明作用
其他注解
不同的的業務檔案放在不同的組態檔yml中,所以需要動態加載組態檔
@PropertySource(value=“classpath:/…”,ebcidubg=“UTF-8”) 動態加載組態檔 為了給定義的變數賦值
@Select("…") 簡單的sql陳述句可以用該注解直接在方法上描述
@CrossOrigin 此注解描述的Controller,表示允許跨域訪問
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266364.html
標籤:java
上一篇:SpringBoot核心技術
