使用@value注解取不到application.xml配置文件中的值怎么解决

发布时间:2022-03-21 13:34:28 作者:iii
来源:亿速云 阅读:544

本篇内容介绍了“使用@value注解取不到application.xml配置文件中的值怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

@value注解取不到application.xml的值

报错信息

今天从码云上拉下来代码,突然发现系统跑不起来了,报错信息如下:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.cache.type' in value "${spring.cache.type}"

使用@value注解取不到application.xml配置文件中的值怎么解决

开发组最近都忙着写业务层代码,一般来说不会碰配置文件里的东西,莫名其妙就出现了这个错误。

原来代码

Java代码如下:

@Configuration
public class ShiroConfig {    
    @Value("${spring.cache.type}")
    private String cacheType;
    @Value("${server.session-timeout}")
    private int tomcatTimeout;
}

使用@value注解取不到application.xml配置文件中的值怎么解决

配置文件:

使用@value注解取不到application.xml配置文件中的值怎么解决

pom.xml原文件:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

问题原因

pom.xml中的resource设置的不正确

pom.xml修改后:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
    </resources>
</build>

思考

比较神奇的是,修改pom文件后启动成功了,然后再把它改回原来的样子,也不会报错了。Maven clean,Rebuild Project等操作后重启也都可以的。有点搞不懂。

拓展阅读

一般情况下:

如果没有指定resources,自动会将classpath下的src/main/java下的.class文件和src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。

如果设定了resources,那么默认的就会失效,就会以指定的includes和excludes为准。

例如,为了使打包的jar包里头包含.java源文件。

工具类@Value取不到值

工具类里@Value取不到值,如下图

使用@value注解取不到application.xml配置文件中的值怎么解决

使用@value注解取不到application.xml配置文件中的值怎么解决

原因是new的对象

使用@value注解取不到application.xml配置文件中的值怎么解决

改为

使用@value注解取不到application.xml配置文件中的值怎么解决

EncryptIdCardUtil类方法改为非静态方法,ConnectService类由new改为@Autowired注入

使用@value注解取不到application.xml配置文件中的值怎么解决

RiskService里也由直接调用EncryptIdCardUtil里的静态方法,改为EncryptIdCardUtil类@Autowired注入

使用@value注解取不到application.xml配置文件中的值怎么解决

就可以了

使用@value注解取不到application.xml配置文件中的值怎么解决

“使用@value注解取不到application.xml配置文件中的值怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 在controller中无法通过注解@Value获取到配置文件中定义的值解决办法
  2. 在Spring项目中使用@Value注解引入配置文件中的参数

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

@value

上一篇:Python&Matlab如何实现灰狼优化算法

下一篇:springboot如何获取properties属性值

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》