Spring Annotation được thiết kế rất đa dạng, hỗ trợ cho việc phát triển ứng dụng Spring tiện dụng hơn, tuy nhiên vì sự đa dạng này làm cho việc tiếp cận Spring ban đầu có phần chậm, sau đây là các tóm tắt ngắn gọn về các Annotation sử dụng trong Java Spring.
Spring Boot and Web annotations
@SpringBootApplication
Vị trí: đặt trước class.
Công dụng: là 1 tổng hợp (có ý nghĩa tương đương) từ 3 annotation: @Configuration
, @EnableAutoConfiguration
và @ComponentScan
.
@EnableAutoConfiguration
Vị trí: đặt trước class.
Công dụng: cho phép Spring tự nạp cấu hình dựa trên biến môi trường (classpath).
@Controller
Vị trí: đặt trước class.
Công dụng: đánh dấu class là 1 web controller, đón nhận và xử lý các yêu cầu từ client.
@RestController
Vị trí: đặt trước class.
Công dụng: là tổng hợp (có ý nghĩa tương đương) từ 2 annotation @Controller
và @ResponseBody
.
@ResponseBody
Vị trí: đặt trước class hoặc method.
Công dụng: được sử dụng chung với @Controller, yêu cầu Spring trả về dữ liệu trong body thay vì là 1 trang web hoàn chỉnh.
@RequestMapping
Vị trí: đặt trước method.
Phương thức chỉ định trong controller, dùng để chỉ định HTTP Request cho 1 URL.
@RequestParam
Vị trí: đặt trước tham số của method trong class của controller.
Công dụng: phân tách và truyền giá trị từ query parameter, form parameter, file vào tham số của phương thức.
@PathVariable
Vị trí: đặt trước tham số của method trong class của controller.
Công dụng: phân tách và truyền giá trị trong path của URI đến tham số của phương thức.
Spring Cloud Annotations
@EnableConfigServer
Vị trí: đặt trước class.
Công dụng: đưa ứng dụng đặt trong server trở thành nơi lưu trữ các thông số mà các ứng dụng khác có thể lấy.
Các ứng dụng khách sử dụng spring.application.cloud.config.uri
trong @SpringBootApplication
để lấy cài đặt của server.
@EnableEurekaServer
Vị trí: đặt trước class.
Công dụng: chuyển các ứng dụng thành dịch vụ Eureka, các ứng dụng khác có thể đặt tại nó.
@EnableDiscoveryClient
Vị trí: đặt trước class.
Công dụng: ứng dụng của bạn có thể đăng ký trong các server, và được kết nối với các dịch vụ khác thông qua nó.
@EnableCircuitBreaker
Vị trí: đặt trước class.
Thiết lập giao thức ngắt Hystrix
@HystrixCommand(fallbackMethod = "fallbackMethodName")
Vị trí: đặt trước method.
Công dụng: đánh dấu phương thức fallback nếu không thực thi thành công.
Spring Framework annotations
@Configuration
Công dụng: đánh dấu class dùng để cấu hình, có thể tạo được các bean thông qua @Bean
.
@ComponentScan
Vị trí: đặt trước class có cấu hình trước @Configuration
.
Công dụng: Spring có thể quét các gói cho các class @Configuration
.
@Bean
Vị trí: đặt trước method trong 1 class có cấu hình @Configuration
.
Công dụng: tạo ra 1 đối tượng được quản lý bởi Spring container.
@Component
Vị trí: đặt trước class.
Công dụng: chuyển đổi class thành Spring bean vào lúc Spring quét.
@Service
Vị trí: đặt trước class.
Công dụng: kế thừa từ @Component
, đánh dấu 1 class là 1 service dùng để thực thi các bussiness của ứng dụng.
@Autowired
Vị trí: đặt trước field, constructor hoặc method.
Công dụng: đánh dấu để Spring’s depency injection tích hợp các bean vào.
@Lazy
Vị trí: đặt trước class hoặc method.
Công dụng: @Bean
hoặc @Component
có thể khởi tạo khi được yêu cầu thay vì khởi tạo toàn bộ khi Spring khởi động.
@Qualifier
Vị trí: đặt trước field, constructor hoặc method.
Công dụng: nếu có nhiều hơn 1 bean có cùng kiểu dữ liệu, có thể chỉ định chính xác bean cần tích hợp khi sử dụng cùng @Autowired
.
@Value
Vị trí: đặt trước field, constructor hoặc method.
Công dụng: biểu thị giá trị mặc định cho trường hoặc thông số, đơn giản như "#{systemProperties.myProp}"
.
@Required
Vị trí: đặt trước field, constructor hoặc method.
Công dụng: được áp dụng cho phương thức setter của thuộc tính bean và do đó làm cho setter-injection là bắt buộc. Chú thích này chỉ ra rằng thuộc tính bean được yêu cầu phải được đưa vào t 1 trị tại thời điểm cấu hình.