SSO单点登录的理论与实践(一)

SSO简介

随着企业业务的发展,企业中可能会出现多个业务的系统。如果是对内使用的话,那稍微还好点,如果是ToC的业务,客户如果每进入一个系统都需要登录的话,对用户来说是一个麻烦事情,很可能会造成用户的流失。

如果在每一个系统里面都存储一份用户的账号和密码数据,这种做法显然是不靠谱的,而且也不安全的。会造成客户的数据大量冗余,而且还会导致后期维护十分的麻烦。

所以,现在一般都会采用SSO单点登录

在介绍SSO登录之前,需要先了解一下浏览器的同源策略

阅读更多

Springboot中使用Mysql多数据源

随着业务的发展,很可能需要在一个项目里面同时使用多个数据源。

大致看了网上的多数据源Demo,发现无非有两种:

一种是自己封装多个JdbcTemplate,然后调用对应的数据库就使用对应的JdbcTemplate

一种是通过注解的方式来实现,在需要切换数据源的方法上添加一个自己封装的注解便可以完成切换。

考虑了一下以后的扩展性和通用性,便决定采用基于注解的多数据源方式

阅读更多

SpringBoot中在一个事物中更新多表的注意事项

现象:

具体表现为数据被update之后,在同一个事物里面再次查询,查询的是一个更新之后的值。

复现步骤

更新一个商品的信息,其步骤如下:

  1. 更新商品表的一些数据
  2. 在进展表中新加入一条申请
  3. 在操作日志表中新增各种变更的操作(记录变更之前的值,变更之后的值)
阅读更多

一次SpringBoot初始化引起的思考

在Spring中,经常会使用@Resource注解来自动装配一些Bean,但是在初始化的时候还是有一点小坑的,下面是一段代码,有三个类,分别是A,B,C。

类A:

1
2
3
4
5
6
7
8
9
10
11
@Service
public class A {

@Resource
B b;


public void someMethod(){
System.out.println(b.getC() == null);
}
}

类B:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Service
public class B {

@Resource
C c ;

public C cParam =getC();

public C getC(){
return c.getAnewC();
}

}
阅读更多