Нет, невозможно вставить значение в статическое поле из контекста XML.
Если вы можете изменить класс, у вас есть следующие простые варианты:
- удалите статический модификатор и добавьте @ Inject / @ Autowire над полем
- добавить конструктор / метод установки / метод init.
Иначе, вы можете сделать это с помощью поддержки конфигурации Java в Spring.
Пример:
Класс Demo со статическим полем и методом JUnit, который утверждает, что контейнер Spring добавляет требуемое значение в статическое поле:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("test-context.xml")
public class Demo {
public static String fieldOne;
@Test
public void testStaticField() {
assertEquals("test", fieldOne);
}
}
Добавьте пространство имен контекста в ваш applicationContext и элемент component-scan:
<context:component-scan base-package="com.example" />
Добавьте ваш бин со статическим полем, например:
@Configuration
public class JavaConfig {
@Bean
public Demo demo() {
Demo.fieldOne = "test";
return new Demo();
}
}
В этом случае класс JavaConfig должен находиться в пакете com.example, как объявлено в элементе component-scan.