1. @Autowired和@Resource注解的区别
@Autowired和@Resource注解的区别和联系(十分详细,不看后悔)_莫小兮丶的博客
1. @Autowired注解是Spring提供的,而@Resource注解是J2EE本身提供的
2. @Autowird注解默认通过byType方式注入,而@Resource注解默认通过byName方式注入
不如先看看这两个注解自动装配了什么。
<bean id="testService" class="com.test.service.impl.TestServiceImpl">
<constructor-arg name="testDao" ref="testDao"/>
</bean>
用id找这个bean是byName,用class找是byType
但好像没有写过这个xml啊
因为springboot帮忙写了,我们只要写注解就好。
Spring Boot框架知识总结(超详细,一次性到位) - 知乎 (zhihu.com)
3. @Autowired注解注入的对象需要在IOC容器中存在,否则需要加上属性required=false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。
IOC(Inversion of Control)容器
Spring IoC负责创建对象、管理对象(通过依赖注入(DI)、装配对象、配置对象,并且管理这些对象的整个生命周期。
依赖注入
起源:理解依赖注入(DI – Dependency Injection)
依赖注入实现方式:依赖注入的三种方式_依赖注入的三种实现方式_Juliussss的博客
2. UmsAdminCacheServiceImpl
用了Redis缓存
3. UmsAdminServiceImpl
token
用户身份验证的令牌——Token - 知乎 (zhihu.com)
jwt(JSON WEB TOKEN)
登录一次后生成一个token,后面持有这个token就不用再登录了。
spring-security和jwt如何生成token - 掘金 (juejin.cn)
*spring security
Spring Security 入门原理及实战 - 逃离沙漠 - 博客园 (cnblogs.com)
后面看security的时候再学
注册:检查是否有重名用户;密码加密存储;
登录:检查密码;检查账户状态;建立安全上下文;生成并返回token;
关于上下文:
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
Authentication(Spring Security 认证笔记) - 大地的谎言 - 博客园 (cnblogs.com)
关于SecurityContextHolder
核心组件之SecurityContextHolder - 猫毛·波拿巴 - 博客园 (cnblogs.com)
里面可以存一个Context,也可以存多个,存多个的时候用ThreadLocal存,属于两种策略。
关于ThreadLocal
非常好博客,还介绍了引用的类型:ThreadLocal的介绍+经典应用场景 - 掘金 (juejin.cn)
弱引用:每次gc都会被回收掉。Map里类似<线程,线程变量>,如果key强引用线程,那么线程结束无法被回收。
ServletRequestAttributes:获取Servlet原生Request
更新密码:判空;新旧密码是否一致;旧密码是否正确;设置密码;更新缓存(删除缓存里的id,即更新密码后重新登陆);
return SpringUtil.getBean(UmsAdminCacheService.class);
获取当前的,也就是运行中的Bean作为service