SpringBoot 2.2.x 的一些坑

背景:

  druid版本:1.1.10;

  springboot版本:2.2.5 RELEASE

坑一:

报错:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

 2.2.x版本下的Springboot已经不支持 “com.mysql.jdbc.Driver”这个驱动了,这个驱动是对应MySql 5.5.x版本的;需要换上MySql 5.6.x版本的驱动,即:“com.mysql.cj.jdbc.Driver”,因此,我们只需要修改一下配置文件,换一个驱动,然后设置一下时区(5.6.x版本不设置时区会报错)

参考配置(yml格式):

# druid
spring:
  datasource: # 数据库源配置
    url: jdbc:mysql://127.0.0.1:3306/honeynet?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource # 数据库连接源类型
    tomcat: # tomcat 数据库连接配置
      max-active: 1000 # 数据库最大连接数
      initial-size: 100 # 数据库初始连接数
      max-wait: 60000 # 配置获取连接等待超时的时间
      min-idle: 150 # 需要维护的最小空闲连接数目
      time-between-eviction-runs-millis: 60000 # 间隔多久检测一次空闲连接数目
      min-evictable-idle-time-millis: 300000 # 每条数据库连接最小生存时间
      test-on-borrow: false # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个,注意: 设置为true后如果要生效,validation-query参数必须设置为非空字符串
      test-while-idle: false # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.注意: 设置为true后如果要生效,validation-query参数必须设置为非空字符串
      test-on-return: false # 指明是否在归还到池中前进行检验,注意: 设置为true后如果要生效, validation-query参数必须设置为非空字符串
      validation-query: select 1 # SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录
      num-tests-per-eviction-run: 3 # 在每次空闲连接回收器线程(如果有)运行时检查的连接数量,默认值就是3.

坑二:

 使用mybatis时,给dao层接口打注解的时候@MapperScan和@Mapper一个即可,前者能同时指定多个mapper文件;

并且写SQL的时候,推荐xml文件和注解一起用,简单的SQL用注解,复杂的SQL用xml,这样可读性强。

参考配置(yml格式):

mybatis:
  type-aliases-package: com.xxx.xxx
  configuration:
    map-underscore-to-camel-case: true
    default-fetch-size: 100
    default-statement-timeout: 3000
  mapper-locations: classpath:/mapper/*.xml

坑三:

报错:com.alibaba.druid.pool.DruidDataSource   : testWhileIdle is true, validationQuery not set.....

解决方案:需要添加和修改某些配置项 (https://blog.csdn.net/HXNLYW/article/details/86672024
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以给你一个简单的 MyWebSocketHandler 的示例,如下所示: ```java import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketMessage; import org.springframework.web.socket.WebSocketSession; @Component public class MyWebSocketHandler implements WebSocketHandler { private static final Logger logger = LoggerFactory.getLogger(MyWebSocketHandler.class); // 当 WebSocket 建立连接时调用 @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { logger.info("WebSocket opened"); session.sendMessage(new TextMessage("WebSocket connected")); } // 当收到 WebSocket 消息时调用 @Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { logger.info("WebSocket received a message: {}", message.getPayload().toString()); // 解析收到的消息 try { MessageData data = JSON.parseObject(message.getPayload().toString(), MessageData.class); // 处理收到的消息 if ("ping".equals(data.getType())) { session.sendMessage(new TextMessage(JSON.toJSONString(new MessageData("pong")))); } else { session.sendMessage(new TextMessage(JSON.toJSONString(new MessageData("error", "Unknown message type")))); } } catch (Exception e) { logger.error("Error parsing or processing message: {}", e.getMessage()); } } // 当 WebSocket 关闭连接时调用 @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { logger.info("WebSocket closed"); } // 当发生错误时调用 @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { logger.error("WebSocket error: {}", exception.getMessage()); } // 是否支持部分消息 @Override public boolean supportsPartialMessages() { return false; } } ``` 这个简单的 MyWebSocketHandler 示例实现了 WebSocket 的基本功能,包括建立连接、接收消息、关闭连接等。在这个示例中,我们还演示了如何解析收到的 JSON 格式的消息,并根据消息类型做出不同的响应。这个示例可以作为你编写自己的 WebSocket 处理器的参考,实现更加复杂的功能。需要注意的是,在 SpringBoot 2.2.x 中,需要使用 `@Component` 注解将 WebSocket 处理器标记为 Spring 组件,以便自动扫描并注册到 Spring 容器中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值