Khi sử dụng AspectJ, tại sao sử dụng @Component trên @Configurable.Cấu hình so với Thành phần với Spring và AspectJ
Tôi đã thiết lập Spring và AspectJ cho hỗ trợ @Transactional, các khía cạnh về tự gọi và đưa vào thực thể JPA. Điều này làm việc tuyệt vời.
Tôi đang sử dụng @Component cho hầu hết các lớp cần tiêm và do đó có thể tiêm chúng vào phụ thuộc của chúng. Hoặc, khi tôi không thể, hãy tiêm ApplicationContext và sau đó sử dụng getBean() như một phương sách cuối cùng. Và tôi đang đặt @Configurable chỉ cho các thực thể JPA (Hibernate) cần tiêm. Tôi cũng đã bắt đầu sử dụng @Configurable cho các bài kiểm tra jUnit, để làm cho các bài kiểm tra viết dễ dàng. Điều này cũng hoạt động tuyệt vời.
Nhưng tôi rất tò mò. Nếu AspectJ bây giờ là tự động tiêm (beanifying) bất cứ điều gì với chú thích @Configurable, bất kể nó được xây dựng như thế nào; getBean(), new(), @Autowired. Tại sao tôi không chuyển sang sử dụng @Configurable cho tất cả các hạt của mình? Sau đó, tôi có thể loại bỏ bối cảnh ứng dụng và getBean() hoàn toàn, và chỉ mới() bất kỳ lớp nào tôi không thể tiêm.
Tôi nhận thấy rằng tôi không đề cập đến cấu hình bean XML. Tôi không né tránh điều đó, nhưng dự án này không xảy ra đòi hỏi bất kỳ điều gì. Tôi chỉ xây dựng hoặc setter tiêm phụ thuộc khi thử nghiệm. rất dễ.