写了个SpringSecurity的demo,标准的JWT+RBAC认证授权流程,使用的都是SpringSecurity提供的函数/接口
地址:
https://github.com/skypyb/code_demo/tree/master/spring-security-demo
内附 SQL 脚本
标准的RBAC权限设计,基于动态查询数据库的权限判定(以接口为粒度,即Request URL+Request Method)、基于JWT的认证授权流程。
当然,以上都是在SpingSecurity下实现的。
不得不吐槽一句:
SpingSecurity 真的 ...
Read more »
用动态代理+反射+BIO写个RPC玩玩
RPC : Remote Procudure Call
不同计算机之间的方法可以远程调用,这个就是RPC最重要的概念
但是由于程序是运行在不同的机器中的,两个机器之间并没有联系,要是想实现调用其他机器上的方法如同在调用本机的方法一样的效果 该如何做到?
我用了最基本的BIO来实现这个需求,要实现这种需求, 客户端和服务端两个角色是必 ...
Read more »
传统@ServerEndpoint方式开发WebSocket应用和SpringBoot构建WebSocket应用程序。
WebSocket一次握手就可以使客户端和服务端建立长连接,并进行双向数据传输。
由于其双向传输特性,服务端可主动向客户端发送信息,实时性很高。
而与HTTP协议比起来WebSocket 协议每次数据传输的头信息都较小,节约带宽。
在获取实时数据这方面时,那是比ajax轮询方式高到不知道哪去了。
在SpringBoot架构下进行 ...
Read more »
关于SpringDataJPA使用CriteriaBuilder生成WHERE子句(Predicate对象)时如何使用自定义值代替Expression参数
今天使用Specification 接口创建动态SQL时遇到了个坑。
关于SpringDataJPA如何优雅的定制高效率SQL,即使用Specification 接口创建SQL表示并执行 可以看: 这个
主要就是用CriteriaBuilder 创建 locate 语句遇到个问题。以此可以衍生到 CriteriaBuilder 所有用得上Expression入参的方法上。
关于Mysql的locate方法 ...
Read more »
记录一个可以写骚代码的方式,{{ 双括号语法,没什么卵用
平时初始化某个对象的时候,经常要往里边设置很多值。现在可以借助这种骚方式直接在对象创建时加载好。换种初始化模式,换种心情 (雾
比如初始化一个List,可以写成这样。
List list = new ArrayList(){{
add("1");
add("a");
add("666a");
}};
System.out.println(list);//[1, a, 666a]
效果和这种是一样 ...
Read more »
SpringDataJPA如何优雅的定制高效率SQL
其实SpringDataJPA很方便,虽然他是重量级ORM框架,但是在SQL定制上一点都不输于Mybatis。
用@Query注解能使用QueryDsl语法。将nativeQuery属性设置为true就能使用原生SQL手写,也就是Mybatis一样的效果。
实现方式也挺简单的,DAO层接口继承一下CrudRepository就可以进行开发。看国内用的少,应该是因为比较新吧。
这是 ...
Read more »
java实现在多服务器之间的文件传输(Jsch)
JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。
我主要是今天完成个分布式架构下获取其他服务器文件流的功能,顺便记一下。这个还是很简单的。
我用的是1.54版本,就这个版本用的人最多。这是地址: https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.54
...
Read more »
关于SpringBoot中RabbitMQ发送消息的回调以及消息确认、重试机制
若想实现RabbitMQ的消息回调,需要在配置文件下的rabbit选项下添加一行设置:
#启用消息确认机制。能收到MQ Broker的异步响应
publisher-confirms: true
然后在发送者发送消息之前,需要先自行绑定好一个回调方法。
下面是创建回调方法与绑定的全部代码:
package com.skypyb.rabbitmq.producer;
import com.skyp ...
Read more »
SpringBoot整合RabbitMQ, 实现生产者与消费者的功能。以及这期间我踩的坑。
自然,依赖是少不了的。除了spring-boot-starter-web依赖外。
就这个是最主要的依赖了,其他的看着办就是了。我用的是gradle,用maven的看着弄也一样的。无非就是包+包名+版本
//AMQP
compile('org.springframework.boot:spring-boot-starter-amqp:2.0.4.RELEASE')
这里有一个坑。导致我后来发送消息时一直连不上去。报 ...
Read more »
基于SpringMVC拦截器与Annotations+Reflex做服务端权限控制
又到了我第二喜欢的玩反射时间了。真快乐啊。
如标题所说,我写了个权限控制。权限控制的精髓就是限制用户访问范围。一个系统,总得有后台、管理者这些绕不开的玩意儿。
还有用户所代表的各种不同角色,如游客、登陆者、管理员、代理商、作者、编辑,等等等等。他们这些角色在一个庞大的系统里能够操作的地方总 ...
Read more »
1
2
3