赞
踩
1.1 引入maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
1.2 获取加密密码
打开引入依赖的所在位置
1.3 在当前目录打开dos窗口
1.4 使用命令生成加密密码&密钥(两种命令二选一,推荐命令2方便后面复制使用)
命令1:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码
直接把密钥打印在dos窗口
命令2:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码 > pwd.txt
生成一个文件在当前目录下
1.6生成的文件
1.5 配置文件数据库连接
springboot有两种常用的配置文件,使用哪一种都OK
配置文件 public-key 对应 publicKey
配置文件password 对应 password
applicateion.properties
spring.datasource.url=jdbc:mysql://localhost:3306/db_jpa?serverTimezone=UTC
spring.datasource.username=root
# 生成的加密后的密码
spring.datasource.password=MjJJ2fhGNs6cZtnpFrkEeSvmRjQIQE50MQXNRViz9RE60Ga/YzQjXrEiO65CDx1wbRPAtYDj29O3tWwu9+8aDw==
# 生成的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKiUxZbptPIvD3c5fxkuqUP/M9HrzWJtaYgbiH2vBHI4Td4DJNd3zJbCY0kxbUiSGGR2V0lwJ7a0ZVaqHPiHPNcCAwEAAQ==
# 配置 connection-properties,启用加密,配置公钥。
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
# 启用ConfigFilter
spring.datasource.druid.filter.config.enabled=true
注意:spring.datasource.druid.filter.config.enabled=true 不配置就会出错
application.yaml
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver druid: url: jdbc:mysql://127.0.0.1:3306/db_jpa?serverTimezone=UTC username: root password: MjJJ2fhGNs6cZtnpFrkEeSvmRjQIQE50MQXNRViz9RE60Ga/YzQjXrEiO65CDx1wbRPAtYDj29O3tWwu9+8aDw== connection-properties: config.decrypt=true;config.decrypt.key=${public-key} filter: config: enabled: true public-Key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKiUxZbptPIvD3c5fxkuqUP/M9HrzWJtaYgbiH2vBHI4Td4DJNd3zJbCY0kxbUiSGGR2V0lwJ7a0ZVaqHPiHPNcCAwEAAQ== # 连接 mysql 数据库配置 # datasource: # url: jdbc:mysql://127.0.0.1:3306/db_jpa # username: root # password: Pass1234 # driver-class-name: com.mysql.cj.jdbc.Driver # type: com.alibaba.druid.pool.DruidDataSource # 驱动配置信息 # spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # spring.datasource.url = jdbc:mysql://127.0.0.1:3306/myspringboot # spring.datasource.username = your account # spring.datasource.password = your encryt password # spring.datasource.driverClassName = com.mysql.jdbc.Driver # 连接池的配置信息 # 初始化大小,最小,最大 # spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置获取连接等待超时的时间 # spring.datasource.maxWait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 # spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 # spring.datasource.minEvictableIdleTimeMillis=300000 # spring.datasource.validationQuery=SELECT 1 FROM DUAL # spring.datasource.testWhileIdle=true # spring.datasource.testOnBorrow=false # spring.datasource.testOnReturn=false # 打开PSCache,并且指定每个连接上PSCache的大小 # spring.datasource.poolPreparedStatements=true # spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 # spring.datasource.filters=config,stat,wall,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 # spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrpt=true;config.decrypt.key=your public key
注意:
filter:
config:
enabled: true
不开起会报错
2.1 下载 druid.jar 下载地址
2.2 找到下载好的目录打开dos窗口
2.3 使用命令生成加密密码&密钥(两种命令二选一,推荐命令2方便后面复制使用)
命令1:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码
直接把密钥打印在dos窗口
命令2:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码 > pwd.txt
生成一个文件在当前目录下
2.4编写xml文件
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@**.***.**.***:1521/****"></property>
<property name="username" value="****"></property>
<property name="password"
value="JXnxfjL78rQP3txJL295FucpV4aslSehNT9yhJypHemLcNu/yrRfzZTnKiP+4BjKqPtUzw5tW8iWBNGDeUEYsQ=="></property>
<property name="filters" value="config" />
<property name="connectionProperties"
value="config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKI6dkcdjT8wFLh6fk4D/Vp6Pub5oxhv34zQtgVGaM/KXD3dLkXtP/F0y2pDsLKDa7gocsuxzOrOIUuyVaovkBECAwEAAQ=="/>
</bean>
密钥配置在name=“connectionProperties” value="config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKI6dkcdjT8wFLh6fk4D/Vp6Pub5oxhv34zQtgVGaM/KXD3dLkXtP/F0y2pDsLKDa7gocsuxzOrOIUuyVaovkBECAwEAAQ=="
**config.decrypt=true;config.decrypt.key=**一定要写,要不绝壁报错,被坑过
上面这些都是直接配置在项目代码里的,这样的加密配置起始作用并不高,别人还是可以看到加密后的密码&密钥,安全程度并不高,大多上线后的项目密码都是配置在服务器上的,比如使用tomcat的数据源配置,使用jndi去连接就ok了。
tomcat一般在linux服务器上部署,在tomcat的config目录下的context.xml文件中配置数据源
3.1 下载druid.jar
下载地址
3.2 把druid.jar包放入tomcat中的lib目录下一份
3.2 生成密钥
命令1:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码
命令2:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码 > pwd.txt
生成一个文件在当前目录下
3.3 编写context.xml文件
tomcat/config/context.xml
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/oracledb" factory="com.alibaba.druid.pool.DruidDataSourceFactory" auth="Container" type="javax.sql.DataSource" url="jdbc:oracle:thin:@**.***.***.***:1521/****" driverClassName ="oracle.jdbc.driver.OracleDriver" username="***" password="JXnxfjL78rQP3txJL295FucpV4aslSehNT9yhJypHemLcNu/yrRfzZTnKiP+4BjKqPtUzw5tW8iWBNGDeUEYsQ==" initialSize = "30" maxActive="200" minIdle="30" maxWait="-1" testOnBorrow="true" validationQuery="select 1 from dual" connectionProperties = "config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKI6dkcdjT8wFLh6fk4D/Vp6Pub5oxhv34zQtgVGaM/KXD3dLkXtP/F0y2pDsLKDa7gocsuxzOrOIUuyVaovkBECAwEAAQ==" filters= "config,stat,wall" /> </Context>
connectionProperties = “config.decrypt=true;config.decrypt.key={生成的公钥}”
这个一定要写完整,不然坑死你,咋启动都失败
3.4项目引用
web.xml
<!-- 连接数据库配置 -->
<resource-ref>
<description>Datasource</description>
<res-ref-name>jdbc/oracledb</res-ref-name> <!--context中设置的连接池的名字 -->
<res-type>javax.sql.DataSource</res-type><!--context中导入的类 -->
<res-auth>Container</res-auth><!-- 默认是容器,Tomcat-->
</resource-ref>
datasources.xml
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/oracledb</value>
</property>
<property name="resourceRef">
<value>true</value>
</property>
</bean>
注意 jndiName&res-ref-name 对应的是 tomcat 中context.xml中的name名称,名字不能写错了,写错绝壁失败
使用jndi连接数据库如果不想使用加密的密码,在配置context.xml的时候就不用写connectionProperties这个配置,password换成没有被加密的密码就可以了
springboot使用的是mysql数据库,mvc使用的是oracle数据库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。