Trang chủ » Blog » Java Annotation Là Gì? Giới Thiệu Một Số Annotation Sẵn Có Của Java

Java Annotation Là Gì? Giới Thiệu Một Số Annotation Sẵn Có Của Java

| Blog

Bạn mới tìm hiểu về lập trình Java cơ bản và còn băn khoăn không biết Java Annotation là gì? Cách sử dụng Java Annotation như thế nào? Cùng CodeGym Hà Nội tìm hiểu ngay qua bài viết dưới đây nhé.

Java Annotation là gì?

Java Annotation là gì? Java Annotation là metadata được gắn vào class, method, biến hoặc constructor nhằm cung cấp thông tin cho compiler hoặc framework xử lý tại compile-time hoặc runtime, mà không làm thay đổi trực tiếp logic chương trình.

Annotation (chú thích) được hiểu là một loại siêu dữ liệu (metadata information) trong java. Nó có thể được áp dụng ở một số phần tử mã nguồn java để sau đó một số tool (công cụ ), debugger (trình gỡ lỗi) hoặc các chương trình ứng dụng có thể tận dụng được những chú thích này.

Các Annotation (chú thích) được thêm vào Java kể từ JDK 5. Bạn có thể chú thích class (các lớp), method (phương pháp), variable (các biến), parameter (các tham số) và package (các gói) trong java. Các chú thích được áp dụng trên mã nguồn java sẽ được biên dịch thành bytecode và được sử dụng kỹ thuật Reflection (lập trình phản chiếu) để có thể truy vấn thông tin siêu dữ liệu (metadata information) sau đó mới quyết định hành động thích hợp để thực hiện trong ngữ cảnh cụ thể.

Java annotations

Java annotations là gì

Các Annotation sẽ không trực tiếp ảnh hưởng đến việc thực hiện các mã của bạn, cho dù một số loại chú thích có thể được sử dụng cho mục đích đó. Annotation được xem là một tính năng rất hay và được sử dụng nhiều trong Java. Bạn có thể gặp một số Annotation trong các ứng dụng Java như:

  • Java Core: @Deprecated, @SuppressWarnings, @Override,…
  • Spring Framework: @Controller, @Repository, @Service, @Component,…
  • Hibernate: @Table, @Column, @Id, @ManyToOne, @OneToMany,…

Mục đích sử dụng của các Annotation Java

Java-annotations

Java annotations 1

Sau khi đã hiểu rõ Java Annotation là gì, tiếp theo bạn cần tìm hiểu Annotation được sử dụng cho những mục đích nào. Cụ thể như sau:

Chỉ dẫn cho Biên dịch viên (Compiler)

Annotation giúp trình biên dịch phát hiện lỗi sớm hoặc tắt các cảnh báo không cần thiết. Đây là mức độ cơ bản nhất giúp code sạch và an toàn hơn.

  • @Override: Xác nhận một phương thức đang ghi đè phương thức từ lớp cha. Nếu bạn viết sai tên phương thức, trình biên dịch sẽ báo lỗi ngay lập tức thay vì tạo ra một phương thức mới âm thầm.

  • @Deprecated: Đánh dấu mã nguồn đã lỗi thời. Trình biên dịch sẽ cảnh báo lập trình viên khác không nên sử dụng nó.

  • @SuppressWarnings: Bảo trình biên dịch “lờ đi” các cảnh báo cụ thể (như dùng thư viện cũ hoặc ép kiểu không an toàn).

Hướng dẫn cho các Công cụ (Build Tools & IDEs)

Các công cụ phát triển phần mềm sử dụng Annotation để tự động hóa các tác vụ lặp đi lặp lại.

  • Lombok: Chỉ cần gắn @Getter, @Setter, hay @NoArgsConstructor, thư viện này sẽ tự sinh ra mã nguồn tương ứng trong file .class, giúp file .java của bạn cực kỳ gọn nhẹ.

  • Kiểm tra mã nguồn (Static Analysis): Các công cụ như SonarQube sử dụng annotation để kiểm tra xem bạn có tuân thủ quy tắc lập trình hay không.

Xử lý trong thời gian thực thi (Runtime Processing)

Đây là mục đích mạnh mẽ nhất và là “linh hồn” của các Framework hiện đại như Spring Boot hay Hibernate. Thông qua Java Reflection, chương trình có thể đọc Annotation khi đang chạy để thay đổi hành vi.

Ví dụ trong Spring Boot:

Thay vì phải cấu hình file XML dài dằng dặc, bạn chỉ cần dùng:

  • @RestController: Đánh dấu lớp này sẽ xử lý các yêu cầu HTTP.

  • @Autowired: Tự động “tiêm” (inject) các đối tượng phụ thuộc vào mà không cần khởi tạo thủ công bằng từ khóa new.

Ví dụ trong Hibernate (ORM):

  • @Entity: Biến một Java Class thành một bảng trong Database.

  • @Column(name = "user_name"): Ánh xạ thuộc tính của đối tượng vào đúng cột trong bảng dữ liệu.

Ký hiệu Annotations

Sau khi biết khái niệm Java Annotation là gì bạn cũng cần biết ký hiệu chú thích nó. Một Annotation (chú thích) luôn bắt đầu với ký hiệu @ kèm tên của chú thích. Ký hiệu @ sẽ chỉ ra cho trình biên dịch rằng đây là 1 chú thích.

Ví dụ: @Override trong đó:

  • Ký hiệu @ mô tả đây là 1 chú thích
  • Override sẽ là tên của chú thích.

Giới thiệu một số Annotation sẵn có của Java

Từ khái niệm Java Annotation là gì, bạn có thể tìm hiểu thêm một số Annotation sẵn có của Java dưới đây:

@Deprecated java là gì?

Chú thích @Deprecated sẽ chỉ ra rằng những phần tử bị đánh dấu (method, class hoặc field) đã bị lỗi thời, không nên sử dụng nữa. Trình biên dịch sẽ sinh ra 1 cảnh báo bất cứ khi nào chương trình sử dụng 1 phương thức, lớp hoặc trường đã bị đánh dấu bằng chú thích @Deprecated. Khi 1 phần tử bị đánh dấu bằng chú thích này thì trong Javadoc sẽ bị thêm vào thẻ @deprecated để cảnh báo cho người dùng.

Cú pháp:

// Javadoc comment follows
/**
 * @deprecated
 * explanation of why it was deprecated
 */
@Deprecated
static void deprecatedMethod() { }

Với các IDE lập trình ví dụ như Eclipse, nó sẽ thông báo cho lập trình viên 1 cách trực quan.

mot-so-annotation-san-cua-java

Một số Annotation sẵn của Java

Ví dụ như trên parentMethod1 được đánh dấu @Deprecated java là gì? để thông báo với bạn rằng không nên sử dụng. Có thể sử dụng phương thức parentMethod2 thay thế (dùng @deprecated  để mô tả chú thích).

@Override

Chú thích @Override thường được sử dụng cho các method ghi đè của method trong 1 class cha (superclass). Nếu method này không hợp lệ với 1 method trong class cha, trình biên dịch sẽ thông báo cho lập trình viên 1 lỗi.

Annotation @Override sẽ không bắt buộc phải chú thích trên method đã ghi đè method của class cha. Nhưng khi ghi đè 1 phương thức trong lớp con (sub-class), bạn nên sử dụng chú thích này để đánh dấu phương thức để giúp cho code dễ đọc hơn và tránh được các vấn đề khi bảo trì.

>> Tìm hiểu thêm: Override trong Java

Ví dụ: Trong trường hợp có ai đó thay đổi tên method của class cha, method tại class con của bạn sẽ không còn là method ghi đè nữa. Nếu không có chú thích @Override thì bạn sẽ không tìm ra được nó. Với các chú thích @Override, trình biên dịch sẽ ném ra các lỗi biên dịch. Bạn phải thay đổi luôn cả tên phương thức được ghi đè ở lớp con (nơi chú thích này đang được áp dụng).

Cú pháp:

// mark method as a superclass method
// that has been overridden
@Override
int overriddenMethod() { }

Ví dụ:

Annotation-Override

Annotation Override là gì

Khi bạn thay đổi tên phương thức ở lớp cha, nếu lớp con không sử dụng chú thích @Override thì bạn sẽ khó biết được phương thức nào đang ghi đè phương thức ở lớp cha.

Annotation-Override 2

Annotation Override 2

@SuppressWarnings

Chú thích này sẽ hướng dẫn cho trình biên dịch bỏ qua các cảnh báo cụ thể. VD, nếu trong 1 method có gọi tới 1 method khác đã lỗi thời, hay bên trong method có 1 ép kiểu không an toàn, trình biên dịch có thể tạo ra 1 cảnh báo. Bạn có thể tắt các cảnh báo bằng chú thích method này bằng @SuppressWarnings.

Cú pháp:

// compiler not to generate a warning

@SuppressWarnings("deprecation")

 void useDeprecatedMethod() {

     // deprecation warning

     // - suppressed

     objectOne.deprecatedMethod();

 }

Ví dụ:

SuppressWarnings-trong-java

SuppressWarnings trong java

Cụ thể trong ví dụ trên:

  • @SuppressWarnings(“deprecation”) được dùng để thông báo trình biên dịch không cảnh báo việc sử dụng phương thức có sử dụng @Deprecation.
  • @SuppressWarnings(“unchecked”) được dùng để thông báo trình biên dịch không cảnh báo việc sử 1 ép kiểu không an toàn.
  • @SuppressWarnings(“rawtypes”) được dùng để thông báo trình biên dịch không cảnh báo việc khai báo kiểu dữ liệu không tường minh.

Câu hỏi thường gặp về Java Annotation

Java Annotation có thay đổi logic chương trình không?

Không. Annotation chỉ cung cấp metadata, logic xử lý phụ thuộc vào compiler hoặc framework.

Annotation trong Java có chạy được lúc runtime không?

Có, nếu annotation dùng RetentionPolicy.RUNTIME thì có thể đọc bằng Reflection.

Khi nào nên tạo custom annotation?

Khi bạn cần đánh dấu hành vi đặc biệt cho method/class, thường dùng trong logging, validation, AOP.

Annotation có thay thế hoàn toàn XML không?

Trong đa số framework hiện đại như Spring, annotation đã thay thế phần lớn XML cấu hình.

Kết luận

Trên đây là lời giải đáp cho câu hỏi Java Annotation là gì và một số Annotation sẵn có của Java mà CodeGym Hà Nội muốn giới thiệu đến quý vị bạn đọc. Hy vọng qua bài viết trên các bạn sẽ nắm được những Java Annotation phổ biến này và biết cách sử dụng nó một cách tối ưu nhất.

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

1 + 15 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM