ctripcorp / dal

Ctrip Database Access Layer
Apache License 2.0
1.24k stars 448 forks source link

有好的方式将xml配置代码化吗? #25

Closed QigangZhong closed 6 years ago

QigangZhong commented 6 years ago

项目中使用dal之后必须接入dal.xml/datasource.xml这2个配置文件,而且其中的密码都必须是明文的,有好的方式解决这个问题吗?

hejiehui commented 6 years ago

最简单的方法是继承PropertyFileConfigureProvider。重载getDataSourceConfigure方法。在这个方法里面做敏感信息的解密。: @Override public DataSourceConfigure getDataSourceConfigure(String dbName) { DataSourceConfigure conf = new DataSourceConfigure();

    conf.setUserName(decode(databaseConfig.getProperty(dbName + USER_NAME)));
    conf.setPassword(decode(databaseConfig.getProperty(dbName + PASSWORD)));
    conf.setConnectionUrl(decodedatabaseConfig.getProperty(dbName + CONNECTION_URL)));
    conf.setDriverClass(decode(databaseConfig.getProperty(dbName + DRIVER)));

    return conf;
}

private String decode(String encoded) {..}

dal.xml里面这么配: -xxx-代表:xml元素名 -ConnectionLocator- -settings- -path-D:\dal\database.properties-path- -dataSourceConfigureProvider-YourBelovedPropertyFileConfigureProvider-dataSourceConfigureProvider- -settings- -ConnectionLocator-

QigangZhong commented 6 years ago

thx. 不过这样还是甩不掉dal.xml这个配置, 我觉得理想的状态是不要强依赖xml这种配置文件, 不过还是感谢, 我会在你们源码基础上作改进

hejiehui commented 6 years ago

可以考虑com.ctrip.platform.dal.dao.configure下的DalConfigLoader。具体用法可以问王烨楠

SimpleSimple commented 6 years ago

麻烦问下怎么收藏这个答案,github没个收藏功能的吗(;′⌒`)