Những annotation trong Spring Boot
Học Spring bắt đầu với Hello, World
Tự làm quen với các bài tập và gửi đoạn code đầu tiên của bạn bằng cách hoàn thành bài đầu tiên "Hello, World!".
Luyện tập

     Annotation trong Spring Boot là một dạng siêu dữ liệu cung cấp dữ liệu về một program. Nói cách khác, annotation được sử dụng để cung cấp thông tin bổ sung về một program. Các annotation không phải là một phần của ứng dụng mà chúng ta phát triển. Nó không có ảnh hưởng trực tiếp đến hoạt động của code mà họ chú thích. Nó không thay đổi hành động của chương trình đã biên dịch.

    Trong bài viết này, chúng ta sẽ thảo luận về một số annotation trong Spring Boot mà chúng ta sẽ sử dụng trong bài viết này.

Core Spring Framework Annotations

    @Required: nó áp dụng cho method bean setter. Nó chỉ ra rằng bean được chú thích phải được điền vào thời điểm cấu hình với thuộc tính bắt buộc, nếu không nó sẽ ném một ngoại lệ BeanInitizationException.

Ví dụ:

public class Machine   
{  
private Integer cost;  
@Required  
public void setCost(Integer cost)   
{  
this.cost = cost;  
}  
public Integer getCost()   
{  
return cost;  
}     
}  

    @Autowired: biểu thị rằng các thuộc tính sẽ được auto wired. Nó được sử dụng để autowire Spring Bean trên các method setter, instance variable và contructor. Khi chúng ta sử dụng @Autowired, Spring Container auto wire bean bằng cách match data-type.

Ví dụ:

@Component  
public class Customer  
{  
private Person person;  
@Autowired  
public Customer(Person person)   
{   
this.person=person;  
}  
}  

    @Configuration: là một annotation của class. Class được đánh dấu annotaiton này được Spring Container sử dụng làm nguồn định nghĩa bean.

Ví dụ

@Configuration  
public class Vehicle  
{  
@BeanVehicle engine()  
{  
return new Vehicle();  
}  
}  

    @ComponentScan: là annotation khai báo ở cấp độ class, giống như cái tên của nó, annotation @ComponentScan dùng để scan toàn bộ bean trong ứng dụng, mặc định nó sẽ scan tất cả bean trong package ở vị trí đặt class chưa hàm main, ngoài ra chúng ta cũng có thể tùy chỉnh package cần scan. thường thì annotation @ComponentScan sẽ đi chung vớ @ComponentScan.

    Các param trong @ComponentScan:

  • basePackages: dùng để chỉ ra những package cần scan, bạn có thể truyền vào một hoặc nhiều package name
  • basePackageClasses: chỉ ra những class cần scan
  • excludeFilters: dùng để filter loại trừ những bean or package không cần scan
  • includeFilters: Dùng dể filter những bean or package cần scan.
  • lazyInit: dùng để lazy load bean, default = false
  • resourcePattern: chỉ ra các pattern file để Spring có thể scan, default pattern "**/*.class"

Ví dụ:

@ComponentScan(basePackages = "com.javatpoint")  
@Configuration  
public class ScanComponent  
{  
// ...  
}  

@Bean: nó là một annotation cho method. Nó là sự thay thể của thẻ XML <bean>. Nó cho biết method tạo ra một bean được Spring Container quản lý.

Ví dụ:

@Bean  
public BeanExample beanExample()   
{  
return new BeanExample ();  
}  

Spring Framework Stereotype Annotations

    @Component: là một annotation của class. Nó dùng để đánh dấu class Java là một bean. Một class Java được đánh dấu @Component được tìm thấy trong classpath. Spring Framework chọn nó và cấu hình trong ngữ cảnh ứng dụng như một Spring Bean.

Ví dụ:

@Component  
public class Student  
{  
.......  
}  

    @Controller: @Controller là một annotation ở class. Là một chuyên môn hóa của @Component. Nó đánh dấu class là một class để xử lý request web. Nó thường được sử dụng để phục vụ các request từ UI. Mặc định thì nó trả về một chuỗi cho biết route nào cần redirect. Nó chủ yếu được sử dụng với annotation @RequestMapping.

Ví dụ:

@Controller  
@RequestMapping("books")  
public class BooksController   
{  
@RequestMapping(value = "/{name}", method = RequestMethod.GET)  
public Employee getBooksByName()   
{  
return booksTemplate;  
}  
}  

    @Service: nố thường được sử dụng ở class. Nó cho biết Spring biết rằng class này chứa business login.

package com.hdd;  
@Service  
public class TestService  
{  
public void service1()  
{  
//business code  
}  
}  

    @Repository: nó thường được dụng ở class. Repository là một DAOs (Data Access Object) cái mà sẽ truy cập trực tiếp vào database. Repository thực hiện tất cả các hoạt động liên quan đến database.

package com.hdd;  
@Repository   
public class TestRepository  
{  
public void delete()  
{     
//persistence code  
}  
}  

Spring Boot Annotations

  • @EnableAutoConfiguration: Nó tự động cấu hình bean có trong classpath và cấu hình nó để chạy các phương thức. Việc sử dụng chú thích này bị giảm trong bản phát hành Spring Boot 1.2.0 vì các nhà phát triển đã cung cấp một giải pháp thay thế cho chú thích, tức là @SpringBootApplication.
  • @SpringBootApplication: Nó là sự kết hợp của ba chú thích @EnableAutoConfiguration, @ComponentScan@Configuration.

Spring MVC and REST Annotations

  • @RequestMapping: nó được sử dụng để map các request. Nó có nhiều phần tử tùy chọn như consumes, header, method, name, params, path, produces, và value. Chúng tôi sử dụng nó với lớp cũng như phương thức.
  • @GetMapping: nó map HTTP GET request trên method cụ thể. Nó dùng để tạo một điểm cuối trong web service, và nó được sử dụng thay cho @RequestMapping(method = RequestMethod.GET).
  • @PostMapping: sử dụng khi gửi data tới server để tạo ra tài nguyên mới. Thay cho @RequestMapping(method = RequestMethod.POST).
  • @PutMapping: sử dụng để thay đổi thông tin của một tài nguyên đã tồn tại trong hệ thống bằng cách sử dụng nội dung trong body của request. Nó được sử dụng thay vì sử dụng: @RequestMapping (method = RequestMethod.PUT).
  • @DeleteMapping: sử dụng để xóa một resource chỉ định. Nó được sử dụng thay vì sử dụng: @RequestMapping (method = RequestMethod.DELETE).
  • @PatchMapping: Sử dụng để áp dụng sửa đổi 1 phần cho resource. Nó được sử dụng thay vì sử dụng: @RequestMapping (method = RequestMethod.PATCH)
  • @RequestBody: Nó được sử dụng để liên kết yêu cầu HTTP với một đối tượng trong một tham số phương thức. Bên trong nó sử dụng HTTP MessageConverters để chuyển đổi phần thân của yêu cầu. Khi chúng tôi chú thích một tham số phương thức với @RequestBody, Spring sẽ liên kết phần body yêu cầu HTTP đến với tham số đó.
  • @RequestHeader: Nó được sử dụng để lấy thông tin chi tiết về tiêu đề yêu cầu HTTP. Chúng tôi sử dụng chú thích này như một tham số phương thức. Các phần tử tùy chọn của chú thích là name, required, value, defaultValue. Đối với mỗi chi tiết trong tiêu đề, chúng ta nên chỉ định các chú thích riêng biệt. Chúng ta có thể sử dụng nó nhiều lần trong một phương pháp.
  • @RestController: @RestController là một composed annotation được kết từ annotation @Controller và @ResponseBody, khi đặt một annotation @RestController trên một class controller thì mọi method controller trong class đó sẽ được thừa hưởng annotation @ResponseBody và response data trong controller này sẽ được trả về dưới dạng message.
  • @RequestAttribute: Nó liên kết một tham số phương thức với thuộc tính yêu cầu. Nó cung cấp quyền truy cập thuận tiện vào các thuộc tính yêu cầu từ một phương thức bộ điều khiển. Với sự trợ giúp của chú thích @RequestAttribute, chúng tôi có thể truy cập các đối tượng được điền ở phía máy chủ.

Tổng kết

    Trên đây là một số annotation trong Spring Boot, bạn hãy tham khảo qua, vẫn còn rất nhiều annotation của Spring Boot nữa, mình sẽ bố sung thêm tại bài viết sau. Chúc các bạn thành công!

Một số bài viết liên quan
Devsne VN 3075 lượt xem

Internationalization Spring boot Kotlin and Thymeleaf

Devsne VN 2723 lượt xem

Gửi thông báo đơn giản với Websocket của Spring

Devsne VN 5680 lượt xem

Essential Knowledge for Java Spring Backend Development

Devsne VN 2270 lượt xem

Hello World by Java + Spring Batch Tasklet + Spring Boot

Devsne VN 10111 lượt xem

Lộ trình tự học Spring Framework từ cơ bản đến nâng cao

Devsne VN 3186 lượt xem

Hướng dẫn sử dụng Retrofit2 với Spring boot và Kotlin

Devsne VN 7629 lượt xem

Spring Boot xử lý request trong Controller như thế nào (phần 1)

Devsne VN 746 lượt xem

Spring Boot xử lý request trong Controller như thế nào (phần 2)

Devsne VN 10649 lượt xem

Làm gì để Spring Boot lấy được properties từ AWS Parameter Store (SSM)?

Devsne VN 1370 lượt xem

Sử dụng Spring Data JPA Specifications để tạo ngôn ngữ truy vấn REST