Tôi đang xử lý cơ sở mã kế thừa trong đó một lớp không có dây vào mùa xuân cần có lớp học là có dây vào mùa xuân. Tôi đã hy vọng tạo ra một lớp nhà máy đã được kết nối khi khởi động và sau đó tôi có thể gọi phương thức getInstance() để lấy một đối tượng có dây. cách tốt nhất để làm việc này là gì?Dây mùa xuân lớp tĩnh
Ví dụ:
public class LegacyA {
public void doSomething() {
...
Foo foo = FooFactory.getInstance();
...
}
}
public class FooFactory {
private static Foo foo;
public static Foo getInstance() {
if (foo == null) throw new IllegalStateException();
return foo;
}
}
Tôi cần FooFactory được dây lên khi khởi động để LegacyA chỉ đơn giản có thể gọi getInstance() để nó trả về một thể hiện của Foo (mà cũng là một bean được định nghĩa trong bối cảnh ứng dụng).
<bean id="legacyA" class="LegacyA"/>
<bean id="foo" class="Foo"/>
<!-- I need this bean to be injected with foo so that the FooFactory can return a foo -->
<bean id="fooFactory" class="FooFactory"/>
Edit: Tôi đã phải tái làm việc ví dụ của tôi một chút như tôi đã nhận nó một chút confuzzled trong đầu của riêng tôi ...
Foo được tiêm vào FooFactory như thế nào? Một setter, constructor, ...? – wds