注入弹簧中静态常数的值

在我的一个类中有一个成员,我需要在 !也就是说,我们是否可以为此静态属性注入值?public static StringapplicationContext.xml


答案 1

答案 2

不可以,无法从 XML 上下文向静态字段注入值。

如果可以修改该类,则只需以下简单选择:

  • 删除静态修饰符,并在字段上方添加@Inject/@Autowire
  • 添加构造函数/setter/init 方法。

否则,您可以使用Spring的Java配置支持来完成此操作。

例如:

具有静态字段和 JUnit 方法的 Demo 类,该方法断言 Spring 容器将所需值注入到静态字段中:

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

    public static String fieldOne;

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

将上下文命名空间添加到应用程序Context和组件扫描元素:

<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 包中。