Spring getBean с проверкой типа
Я использую метод ApplicationContext.getBean(имя строки, класс requiredType). bean имеет тип util: set. Мой код выглядит так:
Set<String> mySet = context.getBean("myBean", Set.class);
Я хочу знать, как сделать что-то подобное, чтобы избежать предупреждения о литье типов:
Set<String> mySet = context.getBean("myBean", Set<String>.class);
Я не уверен, можно ли таким образом определить тип класса. Я мечтаю или есть способ сделать это?
Спасибо.
Ответы
Ответ 1
Не совсем, но есть временное решение, которое по крайней мере устраняет необходимость в @SuppressWarnings. Вы можете сделать свой класс абстрактным и позволить Spring использовать код:
public abstract class Test {
Set<String> getMyBean();
}
а затем введите метод поиска в конфигурацию XML:
<bean class="Test">
<lookup-method name="myBean" bean="myBean" />
</bean>
Он не проверяется статически, но он не работает - быстро во время выполнения, и вы сохраняете уродливое отбрасывание кода.
Ответ 2
Возможно, это может быть полезно для вас:
Set<String> setBean= null;
Map<String, Set> beans = applicationContext.getBeansOfType(Set.class);
for (Map.Entry<String, Set> bean: beans.entrySet()) {
ParameterizedType thisType = (ParameterizedType) bean.getClass().getGenericSuperclass();
Class<?> parametrizedClass= thisType.getActualTypeArguments()[0];
if (parametrizedClass.isAssignableFrom(String)) {
setBean= (Set<String>) bean;
}
}
http://javahelp.redsaltillo.net