mall学习笔记(6)

Posted on 2023-05-24 17:40  Capterlliar  阅读(16)  评论(0编辑  收藏  举报

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