Spring context.xml и Set.contains()
Вопрос
Весна:В моем context.xml у меня есть:
<util:set id="someIDs"
set-class="java.util.HashSet"
value-type="java.lang.String">
<value>"W000000001"</value>
<value>"W000000003"</value>
<value>"W000000009"</value>
</util:set>
В моем Java-компоненте реализация следующая:
private Set<String> someSet =
ComUtilities.uncheckedCast(getApplicationContext()
.getBean("someIDs"));
boolean found = someSet.contains("W000000009");
После выполнения блока кода avobe найдено очень странное ложное значение!Почему?Любое предложение/идея?Огромное спасибо.
Решение
Сверху головы - я уверен, что Spring не требует двойных кавычек для данных String. Так что, вероятно, эти строки вставляются в карту с реальными символами в двойных кавычках в начале и конце.
Попробуйте проверить
boolean found = someSet.contains("\"W000000009\"");
чтобы узнать, так ли это.
Другие советы
Я думаю, это потому, что вы указали значения в конфигурации Spring, а затем проверка содержит поиск строки без кавычек.Замените конфигурацию Spring на это:
<util:set id="someIDs"
set-class="java.util.HashSet"
value-type="java.lang.String">
<value>W000000001</value>
<value>W000000003</value>
<value>W000000009</value>
Не связан с StackOverflow