2011-07-08 23 views
12

Tôi có thời gian khó khăn để hiểu tầm quan trọng và lợi ích của Chú thích và do đó có hai câu hỏi liên quan đến họ:Cách chú thích hoạt động nội bộ trong Java hoặc bất kỳ ngôn ngữ lập trình nào khác?

  1. những lợi ích của Chú thích là gì so với cấu hình XML?
  2. Chú thích hoạt động như thế nào trong nội bộ?
  3. Đủ công bằng để nói rằng chú thích liên kết chặt chẽ với ứng dụng trong khi ứng dụng Cấu hình XML được kết hợp lỏng lẻo?

Sẽ đánh giá cao ưu và nhược điểm so với Cấu hình XML với ví dụ để giúp tôi hiểu rõ hơn.

Trân trọng.

Trả lời

0

Cả chú thích và bộ mô tả XML được sử dụng để mô tả một số siêu dữ liệu ở trên cùng của mã thông thường. Sự khác biệt chính là trong trường hợp chú thích, bạn chỉ phải đối phó với một tệp bao gồm mã và siêu dữ liệu. Nó cũng là một lợi thế lớn của chú thích vì nó làm giảm số lượng các bộ phận chuyển động và tăng năng suất.

Mặt khác, nhược điểm của chú thích là chúng liên kết với nhau mã và hệ thống hoặc khung hoạt động bằng cách sử dụng các chú thích đó. Điều đó làm cho khó phân biệt chúng hơn trong tương lai.

Ví dụ: nếu bạn sử dụng Chú thích Hibernate, bạn ràng buộc đối tượng mô hình của mình với Hibernate. Nếu bạn chọn chuyển sang khung công tác khác, bạn sẽ phải trích xuất các chú thích Hibernate từ mã.

Nhưng thực tế, không có khả năng bạn sẽ thay đổi khung thường xuyên. Thường có nhiều lý do khác khiến việc thay đổi khung công tác trên cơ sở mã hiện tại có thể khó khăn. Vì vậy, thường chú thích là một lựa chọn tốt. Khi chúng hoạt động, chú thích là một phần của ngôn ngữ và được xử lý bởi trình biên dịch và các công cụ khác và, tùy thuộc vào lưu giữ, có thể được bao gồm trong bytecode được sản xuất để sử dụng trong thời gian chạy. Cuối cùng, người tiêu dùng quyết định cách sử dụng chú thích.

4

Đối với câu hỏi 1 của bạn,

Cá nhân, tôi cảm thấy, có hai tiêu chí của

  1. chú thích có thể đơn giản hóa các siêu dữ liệu?

    Nếu chú thích không giảm lượng siêu dữ liệu mà bạn phải cung cấp (trong hầu hết các trường hợp họ làm), thì bạn không nên sử dụng chú thích.

  2. Có thể thay đổi hành vi ngắt siêu dữ liệu trong ứng dụng của bạn không?

    Nếu không, bạn có thể cảm thấy thoải mái khi áp dụng thay đổi khi hệ thống đang hoạt động. Tệp cấu hình bên ngoài là nơi tốt nhất cho siêu dữ liệu trong trường hợp này bởi vì bạn không muốn phải biên dịch lại mã của mình để thực hiện thay đổi.

Đối với câu hỏi thứ 2 của bạn,


Chú ý:

+0

không trả lời được câu hỏi, tôi đang cố gắng hiểu cách chú thích thực sự hoạt động nội bộ và lợi ích của việc sử dụng chúng là gì, sử dụng chúng luôn đúng hay có kịch bản mà cấu hình xml thắng trò chơi? – Rachel

+0

Kiểm tra liên kết: http://stackoverflow.com/questions/2798181/what-are-annotations-and-how-do-they-actually-work-for-frameworks-like-spring cũng được bao gồm trong câu trả lời của tôi. –

+0

để trả lời nhận xét thứ hai của bạn 'có thể thay đổi hành vi ngắt siêu dữ liệu trong ứng dụng của bạn', điều này sẽ luôn đúng trong hầu hết các trường hợp phải sử dụng chú thích mà bạn đang ghép nối chặt chẽ ứng dụng? – Rachel

0

Để trả lời câu hỏi đầu tiên, IMO lợi ích lớn nhất là khả năng tích hợp trình biên dịch. Tôi có thể viết một bộ xử lý chú thích có thể xác nhận hợp lệ một số ngữ nghĩa liên quan đến việc áp dụng chú thích. Đó là loại kiểm tra thời gian biên dịch là không thể (hoặc ít nhất sẽ là cách khó khăn hơn) nếu cùng một thông tin đã được thay vì một phần của một tài liệu XML.

Để trả lời câu hỏi thứ hai, chú thích không thực sự "hoạt động" trong nội bộ, theo nghĩa đen, theo nghĩa là chúng không có bất kỳ ngữ nghĩa thực thi vốn có nào. Chúng là các thực thể mức nguồn có thể có hoặc không được giữ lại trong lớp.Có thể được xử lý trong quá trình biên dịch nguồn và nếu chúng được giữ lại trong lớp, có thể được truy cập thông qua sự phản chiếu.

+0

IIRC, chú thích mùa xuân tất cả đều có 'RetentionPolicy' của' RUNTIME', vì vậy chúng có thể được đọc một cách phản ánh. Khung công tác Spring sau đó có thể xác định những gì cần phải được tiêm bằng cách kiểm tra các tệp lớp. –

Các vấn đề liên quan