【问题标题】:Injecting values for static constants in Spring在 Spring 中为静态常量注入值
【发布时间】:2011-02-15 08:05:31
【问题描述】:

在我的一个课程中有一个public static String 成员,我需要在applicationContext.xml 中设置这个值!也就是说,我们可以为这个静态属性注入一个值吗?

【问题讨论】:

    标签: java spring static properties code-injection


    【解决方案1】:

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

    如果你可以修改类,你有以下简单的选择:

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

    否则,您可以使用 Spring 的 Java 配置支持来实现。

    一个例子:

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-07
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        • 2011-06-05
        相关资源
        最近更新 更多