Spring项目使用mysql8.0时需要注意的两点

本文介绍了MySQL中SSL连接配置的方法,以及如何正确配置JDBC连接URL以避免时区异常问题,并提供了适用于MySQL 8.0的JDBC驱动版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.之前的连接url配置
jdbc:mysql://localhost:3306/steam?unicode=utf8

根据MySQL 5.5.45 +,+,+ 5.6.26 5.7.6要求SSL连接必须建立明确的选项默认情况下如果不设置。符合现有的应用程序不使用SSL的verifyservercertificate属性设置为“false”。你需要显式禁用SSL设置usessl = false,或设置usessl =真实提供服务器证书验证信任库;

修改url为:

jdbc:mysql://localhost:3306/snail?useUnicode=true&characterEncoding=utf-8&useSSL=false

注意要使用 & 符号,否则spring的配置文件会报错;useSSL=false不使用服务器验证;

二.mysql8.0对jdbc驱动版本有要求,使用

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
    <scope>runtime</scope>
</dependency>
三.The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone异常
需要修改时区




Spring Boot项目中配置MySQL 5.7和MySQL 8.0作为双数据源是一个相对复杂的任务,但它可以让你在一个应用程序中同访问两个不同的数据库版本。下面是一些步骤和关键点: ### 步骤一:添加依赖项 首先,在`pom.xml`文件中加入对这两个MySQL驱动程序的支持以及HikariCP连接池(推荐),例如: ```xml <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!-- 版本可以根据需要调整 --> <version>5.1.49</version><!-- MySQL 5.7对应的版本 --> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <classifier>8.0.26</classifier><!-- 指定MySQL 8.0对应的具体版本号 --> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </dependency> </dependencies> ``` 注意对于MySQL 8.0以上版本建议明确指定其classifier属性。 ### 步骤二:创建主次DataSource Bean 接下来我们需要为每个数据库分别定义一个名为primaryDataSource (用于MySQL 5.7) 和 secondaryDataSource(用于MySQL 8.0) 的 @Configuration 类,并通过 `@Primary` 注解区分默认使用的数据源: ```java @Configuration public class DataSourceConfig { // 配置MySQL 5.7 数据源 @Bean(name = "primaryDataSource") @Primary // 默认选择的数据源 public DataSource primaryDataSource() { HikariDataSource dataSource = new HikariDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUsername("your_username_for_mysql_5_7"); dataSource.setPassword("password_here"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db_name?useSSL=false&serverTimezone=UTC"); return dataSource; } // 配置MySQL 8.0 数据源 @Bean(name = "secondaryDataSource") public DataSource secondaryDataSource(){ HikariDataSource dataSource = new HikariDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUsername("your_username_for_mysql_8_0"); dataSource.setPassword("another_password_if_needed"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3307/other_db_name?useSSL=false&serverTimezone=UTC"); return dataSource; } } ``` 请根据实际情况修改URL、用户名等信息。 ### 步骤三:设置事务管理和实体管理器工厂 为了让持久层框架如 JPA 或 MyBatis 知道如何切换到正确的数据源,还需要配置相应的 EntityManagerFactory 及 PlatformTransactionManager 实现类。 这里给出基于 JPA 示例代码片段: ```java // 其他必要的导入... @Configuration @EnableTransactionManagement @MapperScan(basePackages="包路径", sqlSessionFactoryRef="sqlSessionFactoryForSecondaryDB") // 如果是Mybatis则需此行配置 public class PersistenceConfig { private final Environment env; @Autowired public PersistenceConfig(Environment env){ this.env = env; } /** * 主库EntityManagerFactory配置... */ ... /** * 辅助库EntityManagerFactory配置. * * 注意使用不同bean名称, * 否则会被认为是相同的实例而覆盖掉之前的配置。 */ ... } ``` 最后别忘了将这些配置注入到具体的业务逻辑组件中去使用它们! --- 上述内容提供了一个基础示例来帮助理解spring boot下的多数据源配置流程;然而实际应用可能会更复杂一点取决于特定需求和技术栈的选择。 --
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值