Каковы точные правила, как Spring выбирает значения из XML-файла определения компонента?
Я имею в виду возможные крайние случаи, когда значение содержит специальные символы:
' " \t \n \uXXXX (unicode escape) \123 (octal escape)
Может быть, что еще?
Например, это распознанные :
- одинарные кавычки (')
- двойные кавычки (")
, но они НЕ распознаются (хотя их наличие не является ошибкой / исключением):
- \ t
- \ n
- \ uXXXX (выход в Unicode)
- \ 123 (восьмеричное экранирование)
Мой файл определения компонента:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.my.pkg2.Student">
<property name="girlFriend">
<list>
<value>Mary</value> <!-- "QUOTES NOT NEEDED !!! -->
<value>"Jane"</value> <!-- BUT OK: String girlFriend[1] = "\"Jane\"" -->
<value>'Jessica'</value> <!-- BUT OK: String girlFriend[2] = "'Jane'" -->
<value>hello\tworld</value> <!-- \t is OK but not recognized - output: "hello\tworld" -->
<value>line1\nline2</value> <!-- \n is OK but not recognized - output: "line1\nline2" -->
<!-- \123 --> <value>start\123end</value> <!-- OK but not recognized - output: "start\123end" -->
<!-- \u7BCD --> <value>start\u7BCDend</value> <!-- OK but not recognized - output: "start\u7BCDend" -->
</list>
</property>
</bean>
</beans>
Сам компонент:
package com.my.pkg2;
public class Student {
String[] girlFriend; // array
// setters defined
}
"Драйвер"класс:
@WebListener
public class MyListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
ApplicationContext context = new ClassPathXmlApplicationContext("myBeanDefinitions.xml");
Student student = (Student) context.getBean("student");
System.out.println(Arrays.toString(student.girlFriend));
}
ВЫХОД:
[Мэри," Джейн "," Джессика ", привет \ tworld, line1 \ nline2, начало \123end, start \ u7BCDend]