sách gpt4 ai đã đi

java - Spring:如何通过类型参数获取适用的通用 bean 实例?

In lại 作者:搜寻专家 更新时间:2023-11-01 03:37:21 26 4
mua khóa gpt4 Nike

我使用的是 Spring 4.1.2,我有以下代码:

public class Foo {
}

public class Bar {
}

public interface Service {
}

@Service("fooService")
public class FooServiceImpl implements Service {
}

@Service("barService")
public class BarServiceImpl implements Service {
}

我知道 Spring 4 可以像下面这样注入(inject)通用 bean 实例:

@Autowired
private Service service; // works fine

但我需要像下面这样以静态方式获取它们:

Service service = getService(getContext(), Foo.class);

...

public static Service getService(ApplicationContext context,
Class objectClass) {
...
}

我尝试使用 ApplicationContext.getBeansOfType(Service.class) 但它返回所有可用的 bean 实例(fooServicebarService)。所以我需要以某种方式传递类型参数。

有什么办法吗?像这样:

@SupressWarnings("unchecked")
Service service = applicationContext.getGenericBean(
Service.class, // bean class
Foo.class // type arguments
// ...
);

1 Câu trả lời

从应用程序上下文中以编程方式获取通用 bean:

String[] beanNames = applicationContext.getBeanNamesForType(ResolvableType.forType(new ParameterizedTypeReference() {}));
if (beanNames.length > 0) {
String bean = (String) applicationContext.getBean(beanNames[0]);
}

或检查cái này如果您对使用特定处理程序处理通用对象的机制感兴趣,请回答。

关于java - Spring:如何通过类型参数获取适用的通用 bean 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26971422/

26 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com