整理spring、springBoot、springCloud中常用相關注解

1.@FeignClient(name="zjyy-bussiness-core"):

定義在接口上,其中name爲後臺配置文件中spring.application.name定義的name,代表http://zjyy-bussiness-core/

2.@RestController:註解相當於@ResponseBody + @Controller合在一起的作用

3.@RequestBody:一般用於處理post請求中的body中的值

4.@RequestParam:一般用於處理get請求中的參數

5.@PathVariable:如 someUrl/{paramId}, 這時的paramId可通過 @Pathvariable註解綁定它傳過來的值到方法的參數上

6.@CookieValue:可以把Request header中關於cookie的值綁定到方法的參數上。

7.@Transactional(rollbackFor = Exception.class):如果類加了這個註解,那麼這個類裏面的方法拋出異常,就會回滾,數據庫裏面的數據也會回滾;註解中如果不配置rollbackFor屬性,那麼事物只會在遇到RuntimeException的時候纔會回滾,加上rollbackFor=Exception.class,可以讓事物在遇到非運行時異常時也回滾。

8. @Param:

@Param註解單一屬性時:

@Param註解JavaBean對象時:

dao層示例

public List<user> getUserInformation(@Param("user") User user);

xml映射對應示例

  1. <select id="getUserInformation" parameterType="com.github.demo.vo.User" resultMap="userMapper">  

  2.         select   

  3.         <include refid="User_Base_Column_List" />  

  4.         from mo_user t where 1=1  

  5.             <if test="user.userName!=null  and user.userName!=''">   and   t.user_name = #{user.userName}  </if>  

  6.             <if test="user.userAge!=null  and user.userAge!=''">   and   t.user_age = #{user.userAge}  </if>  

  7.     </select> 

注意:其實@param相當於一個map集合一樣,當方法的參數有一個時,完全可以不用這個註解,因爲在SQL語句能識別出來就一個,但是要是有多個參數時,這是可以把多個參數放進一個map中在傳入方法中,或者用@Param來標記每個參數,這樣就可以不用map了

9.@SpringBootApplication:是springboot啓動類,包括三個註解,他們的作用分別是:

            @Configuration:表示將該類作用springboot配置文件類,表示這個類中定義了@Bean,會把這個類中bean加載到spring容器中。

            @EnableAutoConfiguration:表示程序啓動時,自動加載springboot默認的配置

            @ComponentScan:表示程序啓動是,自動掃描當前包及子包下所有類


10.@SpringCloudApplication:包括@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker,分別是SpringBoot註解、註冊服務中心Eureka註解、斷路器註解。對於SpringCloud來說,這是每一微服務必須應有的三個註解,所以才推出了@SpringCloudApplication這一註解集合

11.@Mapper :作用於dao層,@Mapper通過xml裏面的namespace裏面的接口地址,生成了Bean後注入到Service層中。相當於@Mapper=@Repository+@MapperScane

12.@Repository:作用於dao層,跟@Service,@Compent,@Controller這4種註解是沒什麼本質區別,都是聲明作用,取不同的名字只是爲了更好區分各自的功能;如果使用@Repository則需要使用@MapperScan("xxx.xxx.xxx.mapper")進行掃描,然後生成Dao層的Bean才能被注入到Service層中。反過來如下

13.@MapperScan:作用於啓動類上,@MapperScan("xxx.xxx.xxx.mapper")進行掃描,如果用了此註解,需要在用到mybatis的配置文件xml裝SQL,xml中的namespace指向dao接口,且在dao層可以不用@Repository​​​​​​​註解

14.@RequestMapping​​​​​​​:


15.@EnableScheduling:啓用定時任務,作用於啓動類上,@Scheduled(cron = "0 0 1 1 * ?")用於方法上。

16.@Aspect:標記爲aop切面類

17.@Pointcut("execution(* com.zjyy.distr.app.mapper..*.*.*(..))"):切點

18.@Around("excudeService()"):環繞通知,在執行目標方法時再執行一些額外的操作

19.@Query:適用於所查詢的數據無法通過關鍵字查詢得到結果的查詢

20.@Modifying:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章