springmvc:@value注解,以获取在*.properties文件中定义的int值

daolsyd0  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(494)

我有一个config.properties文件:

limit=10

我的springmvc-servlet.xml:

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

这是我的控制器类:

@Controller
@RequestMapping(...)
public class Test extends BaseController
{
    @Value("${limit}") Integer limit;   // This doesn't work
    @Value("#{T(java.lang.Integer).parseInt(${limit})}") Integer limit;   // This also doesn't work

    @RequestMapping(...)
    @ResponseBody
    public String session()
    {
        return String.valueOf(limit);
    }
}

错误消息是:

Error creating bean with name 'test': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: java.lang.Integer**.Test.limit; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelParseException: EL1043E:(pos 31): Unexpected token. Expected 'rparen())' but was 'lcurly({)'

有什么想法吗?

gdrx4gfi

gdrx4gfi1#

请尝试以下操作:

@Value("#{config.limit}") Integer limit;

文档位于http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/new-in-3.html
示例如下:

@Repository 
public class RewardsTestDatabase {
    @Value("#{systemProperties.databaseName}")
    public void setDatabaseName(String dbName) { … }

    @Value("#{strategyBean.databaseKeyGenerator}")
    public void setKeyGenerator(KeyGenerator kg) { … }
}

更新:我测试过,也有同样的问题。通过以下说明,我可以将属性值注入到配置了注解的springmvc3.0控制器中

rryofs0p

rryofs0p2#

试试这个: @Value("#{new Integer('${limit}')}") 以及

<context:property-placeholder location="config/config.properties" />
nr7wwzry

nr7wwzry3#

在代码中:

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

classpath是指war文件中的web inf/classes路径。那么您在web inf/classes中有配置文件夹吗?
如果是,则检查使用基于xml的配置,如下所示:

<bean id="dataSource" class="org.tempuri.DataBeanClass">
    <property name="url" value="${url}"></property>
</bean>

如果您仍然得到一个错误,那么肯定有问题的属性文件加载。

相关问题