Annotation trong java, spring boot

Java cung cấp khái niệm annotation từ version 5.0, và Spring Framework cũng bắt đầu sử dụng các annotation từ bản phát hành 2.5.

Spring support for JSR-250 annotations The ‘Common Annotations for the Java Platform’ were introduced with Java EE version 5 and are also included out-of-the-box beginning with Java SE version 6. In May 2006, BEA Systems announced their collaboration with Interface21 on a project called Pitchfork that provided a Spring-based implementation of the Java EE 5 programming model including support for JSR-250 annotations and EJB 3 annotations (JSR-220) for injection, interception, and transactions.https://spring.io/blog/2007/11/19/spring-framework-2-5-released

Dưới đây là khái niệm mình tìm ở một số trang và dịch từ tài liệu gốc của java

Hầu hết các bài viết đều định nghĩa đại loại như vậy, nhưng ở thời điểm bắt đầu học java thì thực sự nó vẫn khá mơ hồ. Chú thích là gì ? siêu dữ liệu là gì ? cung cấp thông tin dữ liệu cho mã nguồn là sao ?

Đầu tiên là khái niệm về siêu dữ liệu:
Có một định nghĩa cũng khá khó hiểu đó là “dữ liệu về dữ liệu”, nó có nghĩa Siêu dữ liệu là bất kỳ dữ liệu nào để mô tả các dữ liệu khác. 

Ví dụ: Thông tin về một tấm hình đó là một dạng siêu dữ liệu

Nếu bạn đã từng học qua XML thì đó cũng làm một ngôn ngữ đặc tả dữ liệu, nó mô tả thuộc tính, cấu trúc cơ bản của loại data.

Trong một ứng dụng thì phải cung cấp các config, các thuộc tính cho chương trình, trước khi có annotation thì  sử dụng các phương pháp như comment, properties hoặc XML nhưng ngoài nhược điểm về chi phí thời gian thì có một vấn đề vô cùng lớn đó là không phát hiện được lỗi ở thời điểm chương trình compile (cái này khác với run code của php), mà lỗi chỉ xảy ra ở giai đoạn runtime , dẫn đến việc debug rất khó khăn cho lập trình viên.

Annotation ra đời đã cải thiện được vấn đề trên, đơn giản hóa và tường minh hơn nhiều so với trước đây, giúp developer chỉ tập trung vào xử lý logic cho ứng dụng của mình.

Trong chương trình tại nơi khai báo annotation thì sẽ đánh dấu cho framework biết cần xử lý một tác vụ gì đó, và tự động framework sẽ xử lý, bạn không cần làm gì hết, và vì lý do không làm gì hết nên sẽ làm cho mình đặt một dấu hỏi lớn: “Cái éo gì đang xảy ra nhỉ ?”

Spring makes use of these annotations by scanning the classes registering them and injecting the necessary dependencies on to the object at compile or runtime for special processing that way the object comes fully bundled and ready for use. So Spring acts like a factory for object creation and it delivers to you composed object with all its dependencies injected.