spring配置属性的两种方式

 spring配置属性有两种方式,第一种方式通过context命名空间中的property-placeholder标签

<context:property-placeholder location="classpath:jdbctemplate/jdbc.properties" />

第二种方式通过创建bean,对应类为PropertyPlaceholderConfigurer

  <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:jdbc.properties" />
  </bean>

第一种方式精短易读,第二种方式更通用,不搞特权,各有各的好处.

经过测试,这两种方式都是可以获取属性文件中的属性的.

然而,却有一个这样的bug,至今不明其理.下面列出2个文件:

文件1

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=haha

使用这个文件的属性时,当然要用${jdbc.driver}这种形式

文件2

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=haha

context方式引入属性文件,无法与文件2搭配,但可以与文件1搭配

bean方式引入属性文件,都可以搭配

context与文件2搭配报错

Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'weidiao'@'localhost' (using password: YES)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:390)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:470)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:480)
    at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:501)
    at jdbctemplate.UserDao.getAllUserNames(UserDao.java:31)
    at jdbctemplate.Main.main(Main.java:12)
Caused by: java.sql.SQLException: Access denied for user 'weidiao'@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)

 

转载于:https://www.cnblogs.com/weiyinfu/p/5591541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值