天天看點

spring注解整理

springBoot注解整理:

一、springBoot啟動程式注解:

@SpringBootApplication

@ServletComponentScan

[email protected]

@SpringBootApplication是一個複合注解,包括@ComponentScan,和@SpringBootConfiguration,@EnableAutoConfiguration。

@ComponentScan:掃描目前包及其子包下被@Component,@Controller,@Service,@Repository注解标記的類并納入到spring容器中進行管理。

@SpringBootConfiguration:繼承自@Configuration,二者功能也一緻,标注目前類是配置類,

                          并會将目前類内聲明的一個或多個以@Bean注解标記的方法的執行個體納入到spring容器中,并且執行個體名就是方法名。

@EnableAutoConfiguration:啟動自動的配置,@EnableAutoConfiguration注解的意思就是Springboot根據你添加的jar包來配置你項目的預設配置,

                          比如根據spring-boot-starter-web ,來判斷你的項目是否需要添加了webmvc和tomcat,

                          就會自動的幫你配置web項目中所需要的預設配置。

                          也有掃描帶有相關注解類的作用。

@ServletComponentScan:需要自定義攔截器。  編寫方法:繼承WebMvcConfigurerAdapter 重寫addInterceptors方法。

@Configuration:配置spring的上下文,啟動容器。

@Value注解說明:

1.普通字元串:

@Value("我是個普通字元串")

private String nornal;

2.系統屬性

@Value("#{systemEnvironment['os.name']}")

private String osName;

3.表達式的值

@Value("#{T(java.lang.Math).random()*1000.0}")

private double randomNumber;

4.其他bean屬性

@Value("#{demoService.anotherValue}")

private String anotherValue;

5.注入檔案資源

@Value("classpath:ch2/value/test.txt")

private Resource testFile;

6.注入網站資源

@Value("http://www.baidu.com")

private Resource testUrl;

7.注入配置檔案的資料

@Value("${book.name:aaa}")

private String bookName;

備注

1.讀取額外配置檔案的屬性,需要如下注解

@PropertySource({"classpath:com/hry/spring/configinject/config.properties"})

建議寫一個類,需要的時候将這個類進行注入操作。

@Component

容器進行類掃描時遇到這個注解會把這個類當成元件添加到spring容器中,需要的時候進行注入操作即可。

@Configuration

底層還是@Component

标注一個類是配置類,spring boot在掃到這個注解時自動加載這個類相關的功能。

@Bean标簽,則類似于該xml檔案中,聲明的一個bean執行個體。

@RequestMapping  作用于類級别或者方法級别。

參數:

1.produces 指定傳回用戶端的資料類型。對應http請求頭中的Accept     produces = {"text/plain", "application/*"}  produces = "application/json; charset=UTF-8"

2.consumes 指定用戶端發送的檔案格式/資料等。對應http請求中的contentType  consumes = {"text/plain", "application/*"}

3.headers  限制請求的請求頭。headers = {"content-type=text/plain "} headers = {"content-type=text/plain ","content-type=text/html "}

4.params   根據請求參數值的不同限制通路的請求

案例: @RequestMapping(value = "/fetch ", params = {"personId=10 "})

        public String getParams(@RequestParam("personId ") String id) {

        return "Fetched parameter using params attribute =  " + id;

        }

這個請求隻有目前端傳參personId的值為10才會觸發。

5.method   設定請求的方法,方法類型:GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE

案例: method = RequestMethod.POST

6.path 映射前端的請求路徑。    value = "plugin/table/tablesetting" 

7.value 和path互為别名。使用方法相同。

8.name 了解成注釋

@ResponseBody

表示該方法的傳回結果直接寫入HTTP response body中一般在異步擷取資料時使用,如異步擷取json資料,加上@Responsebody後,會直接傳回json資料。

@Component

泛指元件,當元件不好歸類時,可以使用這個注解進行标注。一般公共的方法會用上這個注解

@RestController

等價于@Controller和@Responsebody

可以嘗試編寫替換操作

@ControllerAdvice :類上标注注解,進行異常的處理操作。

@@ExceptionHandler:方法上标注注解,進行異常的處理操作。