我想从java类设置数据源密码。所以我配置apache shiro.ini文件来从java类中读取密码字段,但它不起作用。
这是我的数据源shiro.ini文件
ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
ds.serverName = localhost
ds.user = root
dbpassword=com.test.password.PasswordFactory //this is class name
ds.password=$dbpassword.password
ds.databaseName = test
jdbcRealm.dataSource = $ds
和PasswordFactory java类是
package com.test.password;
public class PasswordFactory {
public String password;
public PasswordFactory(){
password="root";
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
这将抛出异常 id [dbpassword.password]的对象尚未定义,因此无法引用。请确保按照创建对象的顺序定义对象,以供将来参考。
答案 0 :(得分:0)
您已将dbpassword设置为整个类PasswordFactory,而工厂类本身没有变量“password”;相反,只有PasswordFactory的实例才有密码。你需要构造一个PasswordFactory实例,使用shiro来完成相当于java代码的工作
dbpassword=new com.test.password.PasswordFactory()