@value读取不到数据库配置文件里的值的解决办法
来源:互联网 发布:linux下安装jira 编辑:程序博客网 时间:2024/05/22 03:39
用@value注解的时候遇到过两次问题,下面说一下两次的解决思路
spring框架可以直接读取,前提是properties文件里有这些值
jdbc_driver=com.mysql.jdbc.Driver jdbc_url=jdbc:mysql://localhost:3306/xxx jdbc_username=root jdbc_password=root
import org.springframework.stereotype.Service; @Service(value = "sqlService") public class SqlServiceImpl implements SqlService { @Value("${jdbc_driver}") private String jdbcDriver; @Value("${jdbc_url}") private String jdbcUrl; @Value("${jdbc_username}") private String jdbcUsername; @Value("${jdbc_password}") private String jdbcPassword; @Override public void fun(){} }
第一次:是核心包没有引
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency>
第二次:后来在另外一个工程里取不到值了,试了很多次,发现是在spring-mvc.xml中的如下代码中有错误,代码如下
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 --> <context:component-scan base-package="com.xxx.xxx" />
正确代码如下,扫描controller包下的所有类时,controller包的地址没有写完整。
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 --><context:component-scan base-package="com.xxx.xxx.web.controller" />
【出错原因】是【无法识别占位符,就是在加载过程中直接把${jdbc_driver}当做字符串处理了】
整理一下错误流程:
我的工程里有一个spring-application.xml和spring-mvc.xml,前者先执行,spring-application.xml有如下代码:
<bean id="decryptedPropertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="order" value="1"/> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="locations"> <list> <value>classpath:*.properties</value> <value>classpath*:application.properties</value> <value>classpath*:globalconst.properties</value> </list> </property> </bean> <!-- 自动扫描 --> <context:component-scan base-package="com.xxx.xxx"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" /> </context:component-scan>
里面配置了数据库配置文件application.properties,并且自动扫描工程包下的所有文件,包括controller层和service层(带value注解的方法是写在service层里),在这时候是能正确的解析@value注解并且取到properties的值的;后来执行spring-mvc.xml,由于扫描的路径填错成 base-package=”com.xxx.xxx” ,它又把service层的@value注解扫描了,由于这个文件没有配置数据库配置文件,导致取不到值,把@value注解中的占位符当作字符串处理。
阅读全文
0 0
- @value读取不到数据库配置文件里的值的解决办法
- spring+mybatis 数据源读取不到配置文件的值
- C#通过读取配置文件里的内容连接数据库
- 数据库配置文件的读取
- 动态获取配置文件里的value
- spring 加载配置文件application.properties,类里如何调用@Value的解决办法
- (C++)viScanf读取不到数据的解决办法
- 用 @Value("${xxxx}")注解从配置文件读取值的用法
- 如何spring使用@value注解读取配置文件的值
- 用 @Value("${xxxx}")注解从配置文件读取值的用法
- 利用Spring的@Value注解读取配置文件
- spring3支持@value注解从配置文件中读取配置值,大大简化读取配置文件的代码@
- 关于VS05里checkboxlist用JS获取不到value值的解决方法
- 关于VS05里checkboxlist用JS获取不到value值的解决方法[转]
- [转载]关于VS05里checkboxlist用JS获取不到value值的解决方法
- Spring之@Value 注解获取properties值(Spring 3的@value简化配置文件的读取)
- input 标签里 value值从数据库读取出来的值显示一半或者没显示原因
- FF下innerHTML获取不到input标签中value的值解决办法
- 8.2(4)
- Java下推栈-链表实现(p94)
- 字符截取 支持UTF8/GBK
- java中switch加载的数据
- 整合ActiveMQ
- @value读取不到数据库配置文件里的值的解决办法
- Linux服务器加入悬镜
- web与ios在微信中调起APP
- Java web 加密之keytool生成自己的证书
- 如何使用WebSocket
- CONFIG_SERIAL_SAMSUNG_DEBUG 打开方法
- 使用DuckDuckGo在命令行中搜索
- 在自己的电脑下搭建nginx+rtmp的流媒体服务器及用java对推流权限验证
- 不可不知的IEEE 802.15.4和ZigBee基础