Spring+Spring Boot+Mybatis框架註解解析

Restful 風格下的Spring Boot的註解開發

電商網站常常用到的restful風格 ,只是一種開發思想,不是開發框架,如今的技術並無徹底實現restful風格。
restful風格是一種架構理念,完美的詮釋了http協議
restful 方式須要配置一套restful風格的前端控制器,用/來標識url-pattern
RequestMapping(value="/ViewItems/{id}" String id) java類裏面使用@PathVariable("id") 註解進行參數綁定String id或者綁定java Bean的bean屬性

@SpringBootApplication  

Springboot 提供了統一的註解@SpringBootApplication來替代這三個註解@Configuration、@EnableAutoConfiguration、@ComponentScan,簡化程序的配置。

@EnableAutoConfiguration

@EnableAutoConfiguration:可以自動配置spring的上下文,試圖猜想和配置你想要的bean類,一般會自動根據你的類路徑和你的bean定義自動配置。

@ComponentScan

@ComponentScan:會自動掃描指定包下的所有標有@Component的類,並註冊成bean,固然包括@Component下的子註解@Service,@Repository,@Controller。

@Configuration

@Configuration標註在類上,至關於把該類做爲spring的xml配置文件中的<beans>,做用爲:配置spring容器(應用上下文),加載配置xml文件的註解。用@Configuration註解該類,等價與XML中配置beans;用@Bean標註方法等價於XML中配置bean。

@EnableWebMvc

想要以Java形式定製默認的配置,你能夠簡單的實現WebMvcConfigurer接口,或者繼承WebMvcConfigurerAdapter並重寫須要的方法:
@Configuration
class WebMvcConfig extends WebMvcConfigurerAdapter {
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  }
}

@Override 

Override是一個marker annotation類型,它被用做標註方法。它說明了被標註的方法重載了父類的方法,起到了斷言的做用。 若是寫錯,編譯器能夠檢測出哪些是錯誤的,這樣能保證你的確重寫的方法正確.

@Validated(value={})

這個註解指的是分組校驗,與BindingResult 配對出現, ModelandView 的 Model對象能夠將error的信息返回給界面。

@ModelAttribute("")

註解回顯到request裏面的key
處理回顯信息:
  無論你輸入什麼,正確都提交,錯誤都回顯,同時還能夠將返回值返回給界面,最簡單的回顯跟數據類型的回顯,直接使用model.addAttribute(
"allErrors",allErrors);   配置圖片的虛擬目錄跟訪問路徑,tomcat雙擊->model->選在第二個add external web module

@Autowired

Spring 2.5 引入了 @Autowired 註釋,它能夠對類成員變量、方法及構造函數進行標註,完成自動裝配的工做。 經過 @Autowired的使用來消除 set ,get方法。

@RequestMapping("fileUpload")

註解爲控制器指定能夠處理哪些特定的 URL 請求。

@ApiOperation和@ApiParam

@ApiOperation(value = 「接口說明」, httpMethod = 「接口請求方式」, response= 「接口返回參數類型」, notes = 「接口發佈說明」;其餘參數可參考源碼,不是spring自帶的註解,而是swagger裏com.wordnik.swagger.annotations.ApiOperation;
@ApiParam(required = 「是否必須參數」, name = 「參數名稱」, value = 「參數具 體描述」。

@Api

修飾整個類,描述Controller的做用。

@ApiOperation

描述一個類的一個方法,或者說一個接口。

@ApiModel

用Model對象來接收參數。

@ApiParam

@ApiParam(value = "token", required = true) @RequestParam String token
Web前端/移動端HTTP請求方式:直接把參數附帶到URL後面,或者用AJAX方法,表單提交。

@ApiProperty

用對象接收參數時,描述對象的一個字段。

@ApiResponse

HTTP響應其中1個請求以及參數描述。

@ApiResponses

HTTP響應總體描述。

@ApiModelProperty

對象屬性 @ApiModelProperty 用在出入參數對象的字段上。

@RestController 

@RestController註解是它繼承自@Controller註解。4.0以前的版本,spring MVC的組件都使用@Controller來標識當前類是一個控制器servlet。 
使用這個特性,咱們能夠開發REST服務的時候不須要使用@Controller而專門的@RestController。
註解自己使用@Controller和@ResponseBody註解。使用了這個註解的類會被看做一個controller使用@RequestMapping的方法本身還有一個默認的@ResponseBody註解。
@Api 用於controller類上 用於協議集描述
@ApiOperation 用在controller的方法上 用於協議集描述
@ApiResponses 用在controller的方法上 屬於Response集
@ApiResponse 用在 @ApiResponses裏邊 屬於Response集
@ApiImplicitParams 用在controller的方法上 屬於非對象參數集
@ApiImplicitParam 用在@ApiImplicitParams的方法裏邊 屬於非對象參數集
@ApiModel 用在返回對象類上 描述返回對象的意義

@component

把普通pojo實例化到spring容器中,至關於配置文件中的<bean id="" class=""/>

@RequestBody

該註解用於讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,而後把相應的數據綁定到要返回的對象上 ,再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上

@Data

註解在類上, 爲類提供讀寫屬性, 此外還提供了 equals()、hashCode()、toString() 方法

@Builder

註解在類上, 爲類提供一個內部的 Builder

@Synchronized

註解在方法上, 爲方法提供同步鎖

@Log4j

註解在類上, 爲類提供一個屬性名爲 log 的 log4j 的日誌對象

@Slf4j

註解在類上, 爲類提供一個屬性名爲 log 的 log4j 的日誌對象

 @Service

用於標註業務層組件

@Controller

用於標註控制層組件(如struts中的action)

@Repository

用於標註數據訪問組件,即DAO組件

@Component

泛指組件,當組件很差歸類的時候,咱們可使用這個註解進行標註。

@Autowired

@Qualifier("chinese") 
當接口存在兩個實現類的時候必須使用@Qualifier指定注入哪一個實現類,不然能夠省略,只寫@Autowired。
<mvc:annocation-driven/>註解形式的能夠不用配置json轉換器,直接使用
@ResponseBody註解 能夠設置json跟Bean 之間的轉換 : 該註解用於將Controller的方法返回的對象,經過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區

 @ModelAttribute

在方法定義上使用 @ModelAttribute 註解:Spring MVC 在調用目標處理方法前,會先逐個調用在方法級上標註了@ModelAttribute的方法,在方法的入參前使用 
@ModelAttribute 註解:能夠從隱含對象中獲取隱含的模型數據中獲取對象,再將請求參數 –綁定到對象中,再傳入入參將方法入參對象添加到模型中

@RequestParam 

在處理方法入參處使用 @RequestParam 能夠把請求參 數傳遞給請求方法

@PathVariable

綁定 URL 佔位符到入參

@ExceptionHandler

註解到方法上,出現異常時會執行該方法

@ControllerAdvice

使一個Contoller成爲全局的異常處理類,類中用@ExceptionHandler方法註解的方法能夠處理全部Controller發生的異常

@ResponseBody

該註解用於將Controller的方法返回的對象,經過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區。 使用時機: 返回的數據不是html標籤的頁面,而是其餘某種格式的數據時(如json、xml等)使用當咱們在Controller上標註了@RestController,這樣至關於Controller的全部方法都標註了@ResponseBody
@responseBody註解的做用是將controller的方法返回的對象經過適當的轉換器轉換爲指定的格式以後,寫入到response對象的body區,一般用來返回JSON數據或者是XML數據,須要注意的呢,在使用此註解以後不會再走試圖處理器,而是直接將數據寫入到輸入流中,他的效果等同於經過response對象輸出指定格式的數據。
@RequestMapping("/login")html

  @ResponseBody
  public User login(User user){
    return user;
  }
  User字段:userName pwd
  那麼在前臺接收到的數據爲:'{"userName":"xxx","pwd":"xxx"}'前端

 

  效果等同於以下代碼:
  @RequestMapping("/login")
  public void login(User user, HttpServletResponse response){
    response.getWriter.write(JSONObject.fromObject(user).toString());
  }java

細節:
Google的一個json的jar包,隨時將對象封裝json返回。 Gson gson = new Gson(); String json = gson.toJson(對象);

@Param

1,使用@Param註解
當如下面的方式進行寫SQL語句時:
    @Select("select column from table where userid = #{userid} ")
    public int selectColumn(int userid);
當你使用了使用@Param註解來聲明參數時,若是使用 #{} 或 ${} 的方式均可以。
    @Select("select column from table where userid = ${userid} ")
    public int selectColumn(@Param("userid") int userid);
當你不使用@Param註解來聲明參數時,必須使用使用 #{}方式。若是使用 ${} 的方式,會報錯。
    @Select("select column from table where userid = ${userid} ")
    public int selectColumn(@Param("userid") int userid);
2,不使用@Param註解
不使用@Param註解時,參數只能有一個,而且是Javabean。在SQL語句裏能夠引用JavaBean的屬性,並且只能引用JavaBean的屬性。
    // 這裏id是user的屬性
    @Select("SELECT * from Table where id = ${id}")
    Enchashment selectUserById(User user);

 《憶》

華麗的服裝
柔美的線條
只爲證實你來過
微笑的表情
脆弱的生命
只爲暗示你還活着
在千里以外的你
耳語的是什麼
牀前的燈
透漏着些什麼
路邊的人羣
又在低頭思索哪個
從前的你我
千年之後還記得住什麼
看見過奔騰的沙漠
體會過無聲的黃河
感覺時間的盡頭
重現惡魔的夢魘
快樂漫漫星空
悲傷縷縷光芒
黑夜與黎明的交替
是善與惡的更迭
冰與火的重生
美輪美奐
只爲意
web

相關文章
相關標籤/搜索