Trong ứng dụng kế thừa rất lớn, tôi có giao diện và lớp học làm không triển khai các giao diện đó.Mùa xuân: Ủy quyền cho trình bao bọc proxy tùy chỉnh cho giao diện tiêm
Giao diện được tạo dựa trên lớp sao cho chữ ký giống nhau (ngoại trừ giao diện thêm một ngoại lệ khác lên trên) và tên giống nhau (do đó dễ tìm tên lớp từ tên giao diện).
Để thực hiện giao diện, chúng tôi thực hiện một loạt các cuộc gọi xử lý và ghi nhật ký nhưng về cơ bản hãy sử dụng java.lang.reflect.Proxy
để ủy quyền cho lớp học. Đơn giản hóa nó trông như thế này:
// This will create a proxy and invoke handler that calls HelloWorld.doSomething
HelloWorldInterface i = MyProxyUtil.getInstance(HelloWorldInterface.class);
i.doSomething();
public interface HelloWorldInterface {
public void doSomething() throws Exception;
}
public class HelloWorld {
public void doSomething() {
//something
}
}
Có thể với chế biến mùa xuân chú thích, để quát @Autowire
tất cả các lĩnh vực loại *Interface
và có sử dụng lò xo MyProxyUtil.getInstance(*Interface.class)
để tiêm thực hiện?
như vậy mà
@Autowire HelloWorldInterface a;
HelloWorldInterface b = MyProxyUtil.getInstance(HelloWorldInterface.class);
@Autowire AnotherInterface c;
AnotherInterface d = MyProxyUtil.getInstance(AnotherInterface.class);
a == b
c == d
Xin lỗi, tôi đang gặp khó khăn trong việc tìm ra cách bạn thực sự định cấu hình để sử dụng? Tôi sẽ thêm gì vào applicationContext.xml của mình? –
@casenelson bạn có thể sử dụng một 'BeanFactoryPostprocessor' để cấu hình' AutowireCandidateResolver' –
Có vấn đề với việc tiêm Môi trường với giải pháp của bạn -> https: // github.com/mariuszs/env-is-null – MariuszS