標籤:registry 異常處理 message xml配置 ali log4 bind enc 業務
Restful 風格下的Spring Boot的註解開發
電商網站經常用到的restful風格 ,只是一種開發思想,不是開發架構,現在的技術並沒有完全實現restful風格。restful風格是一種架構理念,完美的詮釋了http協議restful 方式需要配置一套restful風格的前端控制器,用/來標識url-patternRequestMapping(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並重寫需要的方法:@Configurationclass 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 tokenWeb前端/移動端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")
@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());
}
細節:
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); 《憶》
華麗的服裝
柔美的線條
只為證明你來過
微笑的表情
脆弱的生命
只為暗示你還活著
在千裡之外的你
耳語的是什麼
床前的燈
透漏著些什麼
路邊的人群
又在低頭思索哪一個
從前的你我
千年以後還記得住什麼
看見過奔騰的沙漠
體會過無聲的黃河
感受時間的盡頭
重現惡魔的夢魘
快樂漫漫星空
悲傷縷縷光芒
黑夜與黎明的交替
是善與惡的更迭
冰與火的重生
美輪美奐
只為意
Spring+Spring Boot+Mybatis架構註解解析