Spring Boot注解是一種元數(shù)據(jù)形式,可提供有關(guān)程序的數(shù)據(jù)。換句話說(shuō),注解用于提供有關(guān)程序的 補(bǔ)充信息。它不是我們開(kāi)發(fā)的應(yīng)用程序的一部分。它對(duì)其注解的代碼的操作沒(méi)有直接影響。不會(huì)更改已編譯程序的操作。
在本節(jié)中,我們將討論一些重要的 Spring Boot注解,我們將在本教程的后面部分使用。
@Required: 它適用于 bean 設(shè)置方法。它指示必須在配置時(shí)使用必需的屬性填充帶注解的Bean,否則它將引發(fā)異常 BeanInitilizationException 。
示例
public class Machine { private Integer cost; @Required public void setCost(Integer cost) { this.cost = cost; } public Integer getCost() { return cost; } }
@Autowired: : Spring通過(guò)提供@Autowired注解來(lái)提供基于注解的自動(dòng)裝配。它用于自動(dòng)連接setter方法,實(shí)例變量和構(gòu)造函數(shù)上的spring bean。當(dāng)我們使用@Autowired批注時(shí),spring容器通過(guò)匹配數(shù)據(jù)類型自動(dòng)連接bean。
示例
@Component public class Customer { private Person person; @Autowired public Customer(Person person) { this.person=person; } }
@Configuration: : 它是一個(gè)類級(jí)別的注解。帶有@Configuration注解的類由Spring Containers用作bean定義的源。
示例
@Configuration public class Vehicle { @BeanVehicle engine() { return new Vehicle(); } }
@ComponentScan: : 當(dāng)我們要掃描軟件包中的bean時(shí)使用。它與注解@Configuration一起使用。我們還可以指定用于掃描Spring組件的基本軟件包。
示例
@ComponentScan(basePackages = "com.nhooo") @Configuration public class ScanComponent { // ... }
@Bean: 是方法級(jí)的注解。它是XML
示例
@Bean public BeanExample beanExample() { return new BeanExample (); }
@Component: 。它是一個(gè)類級(jí)別的注解。它用于將Java類標(biāo)記為Bean。在類路徑中找到了一個(gè)用 @Component 注解的Java類。 Spring框架將其拾取并在應(yīng)用程序上下文中將其配置為 Spring Bean 。
示例
@Component public class Student { ....... }
@Controller: @Controller是類級(jí)別的注解。它是 @Component 的專業(yè)化。它將一個(gè)類標(biāo)記為Web請(qǐng)求處理程序。它通常用于服務(wù)網(wǎng)頁(yè)。默認(rèn)情況下,它返回一個(gè)字符串,該字符串指示要重定向的路由。它通常與 @RequestMapping 注解一起使用。
示例
@Controller @RequestMapping("books") public class BooksController { @RequestMapping(value = "/{name}", method = RequestMethod.GET) public Employee getBooksByName() { return booksTemplate; } }
@Service: 也用于類級(jí)別。它告訴Spring該類包含 業(yè)務(wù)邏輯。
示例
package com.nhooo; @Service public class TestService { public void service1() { //business code } }
@Repository: 這是一個(gè)類級(jí)別的注解。該存儲(chǔ)庫(kù)是直接訪問(wèn)數(shù)據(jù)庫(kù)的 DAO (數(shù)據(jù)訪問(wèn)對(duì)象)。該存儲(chǔ)庫(kù)執(zhí)行與數(shù)據(jù)庫(kù)有關(guān)的所有操作。
package com.nhooo; @Repository public class TestRepository { public void delete() { //persistence code } }
@EnableAutoConfiguration: : 它自動(dòng)配置類路徑中存在的bean,并將其配置為運(yùn)行方法。在Spring Boot 1.2.0發(fā)行版中減少了使用此批注,因?yàn)殚_(kāi)發(fā)人員提供了該批注的代替方法,即 @SpringBootApplication 。 @SpringBootApplication: : 它是三個(gè)注解 @ EnableAutoConfiguration,@ ComponentScan,和 @Configuration 的組合。
@RequestMapping: 用于映射網(wǎng)絡(luò)請(qǐng)求。它具有許多可選元素,例如 consumes, header, method, name, params, path, produces和value。我們將其與類以及方法一起使用。
示例
@Controller public class BooksController { @RequestMapping("/computer-science/books") public String getAllBooks(Model model) { //application code return "bookList"; } }
@GetMapping: 它將 HTTP GET 請(qǐng)求映射到特定的處理程序方法。它用于創(chuàng)建提取的Web服務(wù)終結(jié)點(diǎn),而不是使用 @RequestMapping(method = RequestMethod.GET) @PostMapping 它將 HTTP POST 請(qǐng)求映射到特定的處理程序方法。它用于創(chuàng)建創(chuàng)建的Web服務(wù)終結(jié)點(diǎn),而不是使用: @RequestMapping(method = RequestMethod.POST) @PutMapping: 它將 HTTP PUT 請(qǐng)求映射到特定的處理程序方法。它用于創(chuàng)建創(chuàng)建或更新的Web服務(wù)終結(jié)點(diǎn),而不是使用: @RequestMapping(method = RequestMethod.PUT) @DeleteMapping: 它將 HTTP DELETE 請(qǐng)求映射到特定的處理程序方法。它用于創(chuàng)建刪除資源的Web服務(wù)終結(jié)點(diǎn)。使用它而不是使用: @RequestMapping(method = RequestMethod.DELETE) @PatchMapping: 它將 HTTP PATCH 請(qǐng)求映射到特定的處理程序方法。使用它代替使用: @RequestMapping(method = RequestMethod.PATCH) @RequestBody: 用于將HTTP請(qǐng)求與方法參數(shù)中的對(duì)象綁定。在內(nèi)部,它使用 HTTP MessageConverters 轉(zhuǎn)換請(qǐng)求的正文。當(dāng)我們用 @RequestBody注解方法參數(shù)時(shí),Spring框架會(huì)將傳入的HTTP請(qǐng)求主體綁定到該參數(shù)。 @ResponseBody: 它將方法返回值綁定到響應(yīng)主體。它告訴Spring Boot Framework將返回的對(duì)象序列化為JSON和XML格式。 @PathVariable: 用于從URI中提取值。它最適合RESTful Web服務(wù),其中URL包含路徑變量。我們可以在一個(gè)方法中定義多個(gè)@PathVariable。 @RequestParam: 用于從URL提取查詢參數(shù)。也稱為查詢參數(shù)。它最適合Web應(yīng)用程序。如果URL中不存在查詢參數(shù),則可以指定默認(rèn)值。 @RequestHeader: 用于獲取有關(guān)HTTP請(qǐng)求標(biāo)頭的詳細(xì)信息。我們將此注解用作方法參數(shù)。注解的可選元素是名稱,必填,值,defaultValue。 對(duì)于標(biāo)題中的每個(gè)細(xì)節(jié),我們應(yīng)指定單獨(dú)的注解。我們可以在一種方法中多次使用它 @RestController: 可以將其視為 @Controller 和 @ResponseBody 注解的組合。 @RestController注解本身使用@ResponseBody注解進(jìn)行注解。無(wú)需使用@ResponseBody注解每個(gè)方法。 @RequestAttribute: 它將方法參數(shù)綁定到請(qǐng)求屬性。它提供了從控制器方法方便地訪問(wèn)請(qǐng)求屬性的方法。借助@RequestAttribute批注,我們可以訪問(wèn)服務(wù)器端填充的對(duì)象。