2010-01-15 26 views
28

Tôi đang đọc trên Spring vào lúc này và một trong các ví dụ được sử dụng cho việc sử dụng AOP là ghi nhật ký bắt đầu và kết thúc cuộc gọi phương thức.Đang sử dụng Spring AOP để ghi nhật ký một ý tưởng hay?

Tôi cũng đọc rằng việc sử dụng AOP có thể ảnh hưởng đến hiệu suất.

Có sử dụng Spring AOP một ý tưởng hay cho loại đăng nhập này không? Sự hiểu biết của tôi là Spring sử dụng Dynamic AOP sẽ tốt hơn nếu sử dụng Static AOP (Like AspectJ) cho loại AOP này.

Chính sách mã hóa của công ty tôi làm việc đòi hỏi số lượng đăng nhập vô lý và tôi muốn giảm lượng mã đăng nhập tôi phải viết và cải thiện khả năng đọc mã của mình.

Tôi có đang sủa nhầm cây không?

Trả lời

13

Đọc this blog-post về mối quan tâm hiệu suất của bạn.

Cách suy nghĩ của AOP là đặt các lợi ích chức năng được cung cấp ngay từ đầu. Nếu tự động đăng nhập là yêu cầu của bạn và AOP phù hợp với nó - hãy tìm nó.

Điều đó nói rằng, việc tải thời gian dệt, tất nhiên, được ưu tiên nếu yêu cầu khai thác gỗ hạt mịn.

32

tôi đã sử dụng Spring AOP để thực hiện khai thác gỗ vì vậy tôi chia sẻ những quan sát của tôi:

  • tác động Hiệu suất là chưa đủ, nó ít hơn tác động của khai thác gỗ tự
  • Có khía cạnh cấu hình trong cấu hình Spring, bạn có thể để tắt hoàn toàn mã đăng nhập nếu cần
  • Gỡ lỗi trở nên khó hiểu hơn vì dấu vết ngăn xếp trở nên dài hơn
  • Quyết định này ảnh hưởng đầy đủ đến thiết kế. Nó không chỉ là bạn có được một loạt các giao diện và các lớp khía cạnh, nhưng bạn các lớp sản xuất phải rất "mỏng". Đừng quên, bạn không thể chặn các cuộc gọi đến các phương thức phi công cộng. Các cuộc gọi tự (ngay cả với các phương thức công khai) cũng không thể bị chặn (khi bạn làm việc với naked this xử lý thay vì xử lý được bao bọc bởi AOP) và do đó không thể được ghi lại. Vì vậy, tất cả việc ghi nhật ký chỉ có thể xảy ra trên các ranh giới giao diện. (Điều này liên quan đến việc sử dụng khía cạnh dệt dựa trên proxy, có một tùy chọn của thời gian chạy lớp con với cglib, nhưng tôi đã không sử dụng nó)
  • Viết điểm có thể rất phức tạp. IntelliJ Idea giúp xác định rất nhiều phương pháp nào cần được khắc phục bằng cách cắt.
  • Nói chung, tôi thích phương pháp này và nghĩ rằng đó là giá trị sử dụng, nhưng nó xuất hiện nay phức tạp hơn tôi mong đợi
3

tôi đã làm nó tương tự như cách mô tả trong this blog post. Đó là tốt nhất tôi tìm thấy và nó cũng có một sample cho thấy độc đáo sự khác biệt giữa việc sử dụng và không sử dụng AOP.

Imho nó không phải là giá trị nó, trừ khi bạn đang làm một cái gì đó fancier sau đó đăng nhập, giống như quản lý lỗi với sự kiên trì. Nếu bạn có một hệ thống phân cấp ngoại lệ tốt (tên miền, hệ thống) và đặt đúng ranh giới ghi nhật ký, bạn sẽ không giảm nhiều mã đăng nhập.

+0

Liên kết đến trang blog và không phải là blog thực sự cho chủ đề được đề cập –

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