Введение значений для статических констант в Spring

В одном из моих классов существует a public static String участник и я должны установить это значение в applicationContext.xml! таким образом, для нас действительно ли возможно ввести значение для этого статического свойства?

14
задан Robert Harvey 19 October 2010 в 04:21
поделиться

2 ответа

да, по этой ссылке есть пример http://planproof-fool.blogspot.com/2010/03/spring-setting-static-fields.html

11
ответ дан 1 December 2019 в 14:10
поделиться

Нет, невозможно ввести значение в статическое поле из вашего XML-контекста.

Если вы можете изменить класс, у вас есть следующие простые варианты:

  • удалить модификатор static и добавить @ Inject / @ Autowire над полем
  • добавить метод конструктора / установщика / инициализации.

В противном случае вы можете сделать это с помощью поддержки конфигурации Java в Spring.

Пример:

Демо-класс со статическим полем и методом JUnit, который утверждает, что контейнер Spring вводит желаемое значение в статическое поле:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("test-context.xml")
public class Demo {

    public static String fieldOne;

    @Test
    public void testStaticField() {
        assertEquals("test", fieldOne);     
    }
}

Добавьте пространство имен контекста в свой applicationContext и элемент сканирования компонентов :

<context:component-scan base-package="com.example" />

Добавьте ваш bean-компонент со статическим полем, например:

@Configuration
public class JavaConfig {

    @Bean
    public Demo demo() {
        Demo.fieldOne = "test";

        return new Demo();
    }
}

В этом случае класс JavaConfig должен находиться в пакете com.example, как объявлено в элементе component-scan.

4
ответ дан 1 December 2019 в 14:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: