Spring @Values 始终为空

rseugnpd  于 2023-01-04  发布在  Spring
关注(0)|答案(4)|浏览(140)

我在我的应用程序中使用spring,我有一个.properties文件,其中定义了一些值。
在java类中有一个String值:

@Value("${test}")
public String value;

关键是如果我在bean定义中注入这个值:

<bean id="customClass" class="package.customClass.CustomClassImpl">
    <property name="value" value="${test}"></property>
</bean>

它工作正常,但是如果我使用@Value,总是有一个null ...为什么会发生这种情况?
不,我没有做任何“new“,没有示例化“customClass“,我用context.getBean("customClass)得到它。

**EDIT:**我已在上下文中配置了属性占位符:

<bean id="properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:config.properties</value>
                <value>classpath:constants.properties</value>
            </list>
        </property>
    </bean>

先谢了。

vxqlmq5t

vxqlmq5t1#

请记住,您的类需要一个原型注解,如@Component@Service

jyztefdp

jyztefdp2#

如果您正在创建spring Boot 应用程序,并且您的目标是通过(application).properties提供配置参数,则有一种方法可以在不显式声明@Value的情况下完成此操作。
使用注解@ConfigurationProperties(“一些.前缀”)创建您的类属性:

@ConfigurationProperties("my.example")
public class MyClassProperties {
    private String foo;

    public String getFoo() {
        return foo;
    }

    public void setFoo(String foo) {
        this.foo = foo;
    }
}

将定义的属性添加到(应用程序)。properties:

my.example.foo=bar

然后,在您的应用程序中,您可以自动连接所需的属性...

@Autowired
private MyClassProperties myClassProperties;

...并像使用任何其他属性一样使用它们:

LOG.info("Value of the foo: {}", myClassProperties.getFoo());
5uzkadbs

5uzkadbs3#

解决,您需要在配置文件中启用注解配置:第一个月

zpf6vheq

zpf6vheq4#

您需要使用@PropertySource声明.properties文件。不确定使用xml config是否可行。
另外,你确定这个“$",在这个例子中是“#”:http://forum.spring.io/forum/spring-projects/container/61645-value-and-propertyplaceholderconfigurer

相关问题