- 浏览: 1098418 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
1、生成公钥、私钥和密码加密串
2、使用 Durid 的工具类 ConfigTools 验证加密字符串
3、application.properties中的数据源配置
4、配置注入数据源Bean
java -cp druid-1.0.28.jar com.alibaba.druid.filter.config.ConfigTools pcds123123456
2、使用 Durid 的工具类 ConfigTools 验证加密字符串
@Test public void db_decrypt_test() throws Exception { String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJggkaRJ+bqLMF6pefubEDLViboxYKGTdGe+78DziIta8Nv8crOA83M0tFG8y8CqHcFYIbG89q9zcnNvL+E2/CECAwEAAQ=="; String password = "AgDRyKJ81Ku3o0HSyalDgCTtGsWcKz3fC0iM5pLur2QJnIF+fKWKFZ6c6e36M06tF2uCadvS/EodWxmRDWwvIA=="; System.out.println(ConfigTools.decrypt(publicKey, password)); }
3、application.properties中的数据源配置
# mysql config spring.datasource.name=pcdsdata spring.datasource.url=jdbc:mysql://192.168.1.1/mydb spring.datasource.username=root spring.datasource.password=AgDRyKJ81Ku3o0HSyalDgCTtGsWcKz3fC0iM5pLur2QJnIF+fKWKFZ6c6e36M06tF2uCadvS/EodWxmRDWwvIA== # druid datasource config spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.maxActive=20 spring.datasource.initialSize=1 spring.datasource.minIdle=1 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 spring.datasource.poolPreparedStatements=true spring.datasource.maxOpenPreparedStatements=20 spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.filters=config,stat,wall,log4j spring.datasource.publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJggkaRJ+bqLMF6pefubEDLViboxYKGTdGe+78DziIta8Nv8crOA83M0tFG8y8CqHcFYIbG89q9zcnNvL+E2/CECAwEAAQ== spring.datasource.connectionProperties=config.decrypt=true;config.decrypt.key=${spring.datasource.publicKey}
4、配置注入数据源Bean
@Configuration @ConfigurationProperties(prefix = "spring.datasource") public class DataSourceConfig { private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceConfig.class); private String url; private String driverClassName; private String username; private String password; private Integer initialSize; private Integer minIdle; private Integer maxActive; private Integer maxWait; private Integer timeBetweenEvictionRunsMillis; private Integer minEvictableIdleTimeMillis; private String validationQuery; private Boolean testWhileIdle; private Boolean testOnBorrow; private Boolean testOnReturn; private Boolean poolPreparedStatements; private Integer maxOpenPreparedStatements; private Integer maxPoolPreparedStatementPerConnectionSize; private String filters; private String publicKey; private String connectionProperties; @Primary @Bean(name = "dataSource") public DataSource dataSource() { DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(url); datasource.setUsername(username); datasource.setPassword(password); datasource.setDriverClassName(driverClassName); datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery(validationQuery); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setMaxOpenPreparedStatements(maxOpenPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); datasource.setConnectionProperties(connectionProperties); try { datasource.setFilters(filters); } catch (SQLException e) { LOGGER.error("druid configuration initialization filter", e); } return datasource; } /** * 配置mybatis使用的sqlSessionFactory * @return */ @Bean @ConfigurationProperties(prefix = "mybatis") public SqlSessionFactoryBean sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSource) { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); return sqlSessionFactoryBean; } /** * 配置JdbcTemplate * @param dataSource * @return */ @Bean(name = "jdbcTemplate") public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); } /** * 配置@Transactional注解事物 * @return */ @Bean public PlatformTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getInitialSize() { return initialSize; } public void setInitialSize(Integer initialSize) { this.initialSize = initialSize; } public Integer getMinIdle() { return minIdle; } public void setMinIdle(Integer minIdle) { this.minIdle = minIdle; } public Integer getMaxActive() { return maxActive; } public void setMaxActive(Integer maxActive) { this.maxActive = maxActive; } public Integer getMaxWait() { return maxWait; } public void setMaxWait(Integer maxWait) { this.maxWait = maxWait; } public Integer getTimeBetweenEvictionRunsMillis() { return timeBetweenEvictionRunsMillis; } public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) { this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; } public Integer getMinEvictableIdleTimeMillis() { return minEvictableIdleTimeMillis; } public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) { this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; } public String getValidationQuery() { return validationQuery; } public void setValidationQuery(String validationQuery) { this.validationQuery = validationQuery; } public Boolean getTestWhileIdle() { return testWhileIdle; } public void setTestWhileIdle(Boolean testWhileIdle) { this.testWhileIdle = testWhileIdle; } public Boolean getTestOnBorrow() { return testOnBorrow; } public void setTestOnBorrow(Boolean testOnBorrow) { this.testOnBorrow = testOnBorrow; } public Boolean getTestOnReturn() { return testOnReturn; } public void setTestOnReturn(Boolean testOnReturn) { this.testOnReturn = testOnReturn; } public Boolean getPoolPreparedStatements() { return poolPreparedStatements; } public void setPoolPreparedStatements(Boolean poolPreparedStatements) { this.poolPreparedStatements = poolPreparedStatements; } public Integer getMaxOpenPreparedStatements() { return maxOpenPreparedStatements; } public void setMaxOpenPreparedStatements(Integer maxOpenPreparedStatements) { this.maxOpenPreparedStatements = maxOpenPreparedStatements; } public Integer getMaxPoolPreparedStatementPerConnectionSize() { return maxPoolPreparedStatementPerConnectionSize; } public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) { this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize; } public String getFilters() { return filters; } public void setFilters(String filters) { this.filters = filters; } public String getPublicKey() { return publicKey; } public void setPublicKey(String publicKey) { this.publicKey = publicKey; } public String getConnectionProperties() { return connectionProperties; } public void setConnectionProperties(String connectionProperties) { this.connectionProperties = connectionProperties; } }
发表评论
-
SpringBoot开发WebService之Axis
2019-07-14 23:56 4892一、服务器端发布WebService服务 1、POM.xml文 ... -
SpringBoot开发WebService之CXF
2019-07-14 23:56 1352一、在服务器端的WebSerivce服务发布 1、POM.xm ... -
SpringBoot项目非web方式启动
2019-07-03 17:02 48151、springboot 1.x中以非web方式启动 @S ... -
Spring Annotation
2010-12-02 17:14 0Spring2.x引入了组件自动扫描机制,可以在类路径底 ... -
Spring分布式事务实现
2010-11-10 14:28 83205分布式事务是指操作多个数据库之间的事务,spring的 ... -
Spring3 Annotation + Hibernate3-jpa2.0 + CGLIB + 多数据源
2010-08-19 09:30 10525一、定义一个测试用Entity。 @Entity pub ... -
使用iBatis2.0
2010-05-26 10:20 0一、NULL问题 ibatis操作oracle数据库时, ... -
使用AspectJ LTW(Load Time Weaving)
2010-01-04 14:25 10790在Java 语言中,从 ... -
Spring2.0 AOP AspectJ 注释实现
2010-01-04 14:24 5593一、AOP基本概念 切面(Aspect): 一个关注点的模块 ... -
Spring + JPA + Hibernate配置
2010-01-04 14:24 34746<1>persistence.xml放到类路径下的 ... -
配置spring数据源
2009-11-06 16:47 1247配置一个数据源 Spring在第三方依赖包中包含了两 ... -
hibernate的dialect
2009-07-23 10:04 5461一、hibernate的dialect RDBM ... -
spring ibatis入门
2009-04-20 14:16 3893一、applicationContext.xml <?x ... -
Hibernate缓存配置/批量处理
2009-03-25 21:50 10972Hibernate除了自动对Se ... -
Hibernate的一级与二级缓存
2009-03-25 21:24 1715缓存是介于应用程序和物理数据源之间,其作用是为了降低应用 ... -
spring jdbcTemplate使用
2008-07-15 17:17 78225一、使用示例 (1)springJdbcContext.xml ... -
Spring2.X以AspectJ 式AOP 配置事务
2008-07-10 13:23 2100(1)配置: Spring的事务管理是通过AOP代理实 ... -
spring 事务管理
2008-07-08 16:35 12013声明式的事务管理(Declarative transactio ... -
Hibernate中one-to-many/many-to-one和many-to-many
2008-06-28 17:03 3977<1>one-to-many/many-to-on ... -
Hibernate中的对象one-to-one关系
2008-06-26 22:55 2493(1) 通过主健参考,限制2个数据表中的主健使用相同的值 c ...
相关推荐
为了加密数据库密码,我们将使用Druid提供的`ConfigTools`工具类来生成公钥和私钥,并实现加密和解密的功能。 ##### 3.1 创建 DecryptDruid 类 在`src/main/java`目录下创建一个名为`DecryptDruid`的类,该类将...
本文详细介绍了如何在Springboot项目中实现数据库用户名密码的加密过程,包括使用jasypt库对密码进行加密、配置加密后的密码密文到Spring Boot配置文件中,以及设置加密的秘钥环境变量。希望本文能够对大家的学习和...
SpringBoot 整合 Mybatis 使用 Druid 数据库连接池 Spring Boot 是一个基于 Java 的框架,提供了快速开发和生产级别的应用程序的能力。Mybatis 是一个基于 Java 的持久层框架,提供了对数据库的访问和操作的能力。...
数据库密码配置加密操作步骤 Spring Boot 中数据库账号密码加密操作是指在 Spring Boot ...数据库密码配置加密操作是保护数据库账号密码的重要手段,通过使用 Jasypt 或 Druid 等加密库,可以有效地保护敏感信息。
本项目——“SpringBoot+Druid+MySQL毕业设计管理系统”便是一个实例,它充分利用了现代Java开发框架SpringBoot、高性能数据库MySQL以及优秀的数据源连接池Druid,旨在打造一个高效、稳定且易于维护的系统。...
本文将介绍两种在SpringBoot配置文件中对数据库密码进行加密的方法:使用Jasypt库进行加密和利用Druid数据连接池的内置加密功能。 **Jasypt加密** Jasypt是一个强大的Java加密库,易于集成到Spring Boot项目中。...
Druid的数据源配置可以增强系统的监控和管理能力,例如,你可以配置StatFilter插件来跟踪SQL执行性能,使用PasswordCallback来加密数据库密码,确保安全性。同时,Druid还支持SQL执行日志,通过Common-Logging、Log4...
Druid 是一个功能强大、性能高效的数据库连接池,它提供了多种功能,如监控数据库访问性能、数据库密码加密、SQL 执行日志等。下面将介绍如何在 Spring Boot 项目中配置 Druid 连接池。 Druid 的简介 Druid 是阿里...
在SpringBoot应用中,Druid可以作为数据源,有效管理数据库连接,提高数据库操作性能。通过其内置的监控界面,开发者可以实时查看数据库连接状态,监控SQL执行效率,便于优化数据库操作。 **Shiro** Apache Shiro是...
在SpringBoot项目中使用Druid连接池可以实现多种功能,例如监控数据库访问性能、替换传统的DBCP和C3P0连接池中间件、数据库密码加密、SQL执行日志和扩展JDBC。Druid提供了一个高效、功能强大、可扩展性好的数据库...
标题中的"SpringBoot-mybaits-druid-swagger"是一个典型的微服务开发组合,涉及四个主要技术:Spring Boot、MyBatis、Druid和Swagger。这些技术在Java Web开发中广泛使用,尤其在构建高效、易维护的RESTful API时。 ...
Druid提供监控数据库访问性能的能力,支持SQL执行日志,以及数据库密码加密等功能。在实际应用中,Druid可以通过Maven依赖加入项目,只需在pom.xml文件中添加对应的Druid依赖即可。 配置Druid连接池时,我们可以在`...
密码加密数据库连接池:druid分页插件:pageHelpervue安装对应的版本:nodejs 14.xxnpm 6.xxvue 2.x基于SpringBoot电影管理系统源码+数据库(毕业设计).zip 该项目是个人高分毕业设计项目源码,已获导师指导认可通过...
在Spring Boot应用中,使用Ajax实现登录功能是一个常见的需求,它可以提供无刷新的用户体验,...在实际开发中,还需要考虑安全性(如CSRF防护、密码加密等)、错误处理和日志记录等方面,以确保应用的安全性和稳定性。
SQL Yog 是一个功能强大的数据库管理工具,提供了许多实用的功能,例如,数据库设计、数据库优化、数据库备份等。 本文详细介绍了 Spring Boot 实现注册加密与登录解密功能的步骤,包括项目结构、依赖关系管理、...
在SpringBoot应用中,Druid可以作为数据源,提高数据库操作的性能和稳定性,同时其内置的监控功能可以帮助开发者实时了解数据库连接状态。 5. **Redis**:Redis是一个高速的键值存储系统,常被用作缓存和消息队列。...
spring-boot项目整合shiro权限框架,实现了登录认证、权限认证、密码加密、rememberMe、验证码、登录次数过多限制功能 整合redis,使用缓存注解,不用每次都查询数据库 整合druid,页面上监控sql语句的执行情况 git项目...
3. **数据库密码加密**:支持PasswordCallback,增强安全性。 4. **SQL执行日志**:通过LogFilter支持多种日志框架,便于监控数据库访问情况。 5. **可扩展性**:通过Filter-Chain机制,可以方便地编写JDBC层的扩展...
SpringBoot整合Mybatis,通常会使用Mybatis-Spring-Boot-Starter,配合Mapper和PageHelper插件,实现数据库操作的简单高效。 **3. Druid数据源** Druid是阿里巴巴开源的一个高性能、扩展性良好的数据库连接池。...
Spring Boot 配置 Druid 连接池的完整步骤 Spring Boot 是一个基于 Java 的开源... Druid 连接池提供了许多功能强大的功能,如监控数据库访问性能、数据库密码加密、SQL 执行日志等,可以满足大多数应用程序的需求。