雪愿渊

我比较懒,不知道说什么


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

SpringBoot接入Nacos

发表于 2021-05-17 | 更新于 2021-05-18 | 分类于 后端 , Java

前言

SpringBoot项目使用nacos作为配置中心和服务注册中心,同时兼容dubbo的注册中心。
本Demo项目使用的SpringBoot版本是2.3.9.RELEASE。

项目中没有使用nacos官方提供的方式使用SpringBoot的集成方式来进行集成,而是使用了Alibaba Spring Cloud的依赖包进行集成。
原因是因为官网提供的SpringBoot集成方式中,同时使用配置中心和服务发现功能,会使得服务发现功能配置的部分属性冲突不生效。最直接的就是配置中心和服务发现功能不可以配置2个不同的namespace,会默认选择使用配置中心中配置的namespace作为服务发现的namespace。

另外一点就是可以很好的和Spring的注解兼容,无需额外的注解。例如@NacosValue注解。

阅读全文 »

Mybatis自定义Mapper和MapperTemplate实现通用sql

发表于 2020-11-17 | 更新于 2020-11-18

最近项目中开始对接阿里开源的seata分布式事务框架,对接的时候使用update更新数据库记录的时候,应用出现了报错update pk value is not supported!,意思是我使用的tk.mybatis.mapper框架中的updateByExampleSelective等一系列的update语句均会对id进行更新操作,如:

1
update tableName set id=id, ...

网上查询资料,决定自定义update的通用方法来解决这个问题。

阅读全文 »

通过注解实现策略模式,解决不同消息不同类处理

发表于 2020-04-19

项目中需要对不同类型的消息进行不同的处理,这个也是也最常见的订单创建问题是一致的。
最初级的办法就是使用 if…else 或者 switch 来实现逻辑,但是后面类型越来越多的时候,if…else 就显得有些过于臃肿也不易于维护了。最主要的可能就是不能体现实现者的技术能力。所以此时就需要使用策略模式来装一装了。

基础接口定义

策略模式最关键的一点就是所有的实现类都要实现同一个接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.gugu.boy.spring.websocket.handler.processor;

import com.gugu.boy.spring.websocket.MessagePayload;
import org.springframework.web.socket.WebSocketSession;

/**
* 发送socket消息 template.
*
* @author zhoumeiqin
* @date 2019/10/14
*/
public interface PayloadProcessor {
/**
* 执行.
*
* @param session
* @param payload
*/
void process(WebSocketSession session, MessagePayload payload) throws Exception;
}
阅读全文 »

nginx支持websocket连接

发表于 2019-10-22 | 更新于 2019-10-23 | 分类于 nginx

nginx 要支持 websocket 是很简单的,只需要增加 3 个配置就行。
表明是 websocket 连接进入的时候,进行一个连接升级将 http 连接变成 websocket 的连接。
前端就可以通过ws://xxxxx进行 socket 长连接了。

阅读全文 »

SpringBoot2+Spring Security集成WebSocket

发表于 2019-08-19 | 更新于 2020-04-19 | 分类于 后端 , Java

项目要求前端要做到自动刷新功能,low 的办法就是由前端做轮询。但是随着后面产品要求的实时通知越来越多,轮询已经渐渐不满足需求了,只能选择使用 socket 长链接了。

但是百度,Google 之后,发现大多数都是使用的 SocketJS 来实现的 socket,而前端使用的 React Native 只能使用 websocket 实现。没有办法,只能自己查阅资料实现了。

引入 Maven 依赖
1
2
3
4
5
6
7
8
9
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!-- 兼容spring security的socket -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-messaging</artifactId>
</dependency>
websocket 配置
  1. 项目中有使用 Spring Security 作为登录权限验证,所以要先将 security 对 socket 的路径忽略掉,自己去做权限
1
2
3
4
5
6
7
8
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
...
.antMatchers("/socket/**").permitAll()
.antMatchers("/socket").permitAll()
...
}
阅读全文 »
12…4
雪愿居士

雪愿居士

雪愿渊,Java,Spring,Git,Linux
16 日志
9 分类
15 标签
RSS
GitHub CSDN
© 2021 雪愿居士
|