网上搜了不少,先总结一下自己的经验,和踩的坑
1.版本:
版本问题很重要,获取密文的时候,我用的是1.0.15的包,死活只有一个密文,没有公钥私钥打印
有图有真相:
后来我改了1.0.16的包:
java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools cxz1991423A
2.properties配置文件
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc\:oracle\:thin\:@10.10.21.24\:1521\/t1pdb1
jdbc.username=system
jdbc.password=M9gTODvsTFcUFMuPJHOb4JMrVKwHHrh8tp2iEoPQ7F85t5ez4ZGe0l/GRMAkidVyion7WQch79FCcBHmCvPS9w==
jdbc.password.publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIhmJn/IljtzrVJRdMFmCdMMTHzf7lnIRH5KgZ9jMdmK1ZeTO39fqaCBIvA6eE3BwX7inS9w9UejKku5D6TJDoUCAwEAAQ==
3.数据源
<!--定义数据源 详细参数:http://blog.csdn.net/yunnysunny/article/details/8657095 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" /><!--这里的密码是RSA密文密码-->
<!-- 配置初始化、最小、最大数据库连接数 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="50" />
<!-- 获取连接时最大等待时间 单位毫秒 -->
<property name="maxWait" value="60000" />
<!-- 间隔多久进行一次检测,检测空闲连接是否有效,单位毫秒(该值在大于db的timeout无效) -->
<property name="timeBetweenEvictionRunsMillis" value="2000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<!-- 用来检测连接是否有效的sql -->
<property name="validationQuery" value="SELECT 'x' from dual" />
<property name="testWhileIdle" value="true" />
<!-- 申请连接和还回连接的时候都不测试连接是否有效 -->
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<!-- true 表示在连接数快要到最大连接数的时候,系统会进行无效连接的回收, 回收的为removeAbandonedTimeout中设置的秒数后没有使用的连接 -->
<property name="removeAbandoned" value="true" />
<!-- 单位秒 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- true表示会在回收事件后,在log中打印出回收连接的错误信息 -->
<property name="logAbandoned" value="true" />
<!-- 关闭abanded连接时输出错误日志 -->
<!-- 打开PSCache,并且指定每个连接上PSCache的大小, oracle使用 -->
<property name="poolPreparedStatements" value="true" />
<property name="maxOpenPreparedStatements" value="10" />
<!-- 慢查询sql打印 声明密码需要解密,指定RSA公钥,私钥不用管,druid内置(这里我不清楚到底放哪的,也许是jvm内置,请知道的大神提点一下) -->
<property name="connectionProperties" value="druid.stat.slowSqlMillis=100;config.decrypt=true;config.decrypt.key=${jdbc.password.publicKey}" />
<!-- <property name="filters" value="stat,slf4j" /> -->
<property name="filters" value="config,stat,wall,slf4j" /><!--这里的参数:config:指定了之后就会读取并解密数据库密码,stat:统计相关,wall:sql防火墙相关,slf4j:日志相关-->
</bean>
4.请注意上面的红色注释