У меня есть проблема с картой Spring, которая доводит меня до слез.
Мой Spring выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
">
<util:map id="mockMap">
<entry key="userTest1" value="test1"/>
<entry key="userTest2" value="test2"/>
<entry key="userTest3" value="test6"/>
</util:map>
</beans>
Затем код, в котором я выполняю аутоустановка, следующий: (нерелевантные части опущены):
@Autowired
@Resource(name="mockMap")
Map<String, String> testMap;
@Test
public void testGetGearListActivityOK() {
for (String key : testMap.keySet()) {
System.out.println("key = " + key);
}
}
Удивительно, но это на самом деле даст мне ошибку на этапе автоустановки, в котором говорится, что нет типа beans соответствия String. Однако, если я изменю карту в модульном тесте, который будет определен как Карта, тогда я получаю следующий вывод:
[junit] key = mockMap [junit] key = org.springframework.context.annotation.internalConfigurationAnnotationProcessor [junit] key = org.springframework.context.annotation.internalAutowiredAnnotationProcessor [junit] key = org.springframework.context.annotation.internalRequiredAnnotationProcessor [junit] key = org.springframework.context.annotation.internalCommonAnnotationProcessor [junit] key = systemProperties [junit] key = systemEnvironment [junit] key = messageSource [junit] key = applicationEventMulticaster [junit] key = lifecycleProcessor
Мне еще не удалось получить ключевую часть записи, чтобы она действительно отображалась как ключ. Если я изменил карту обратно на Карту и добавлю ее в свой Spring, тогда карта будет заполнена теми, которые используют их идентификаторы в качестве ключей.
Я так запутался и использовал Spring приличную сумму в прошлом. Если кто-нибудь подскажет, что здесь происходит, я был бы очень благодарен.
Спасибо заранее.
Кроме того, я увидел этот вопрос: Автоматическая проводка списка с использованием схемы использования дает NoSuchBeanDefinitionException
Но решение есть использовать @Resource, который я уже делаю.