SpringBootDemo
第五章:面向切面与过滤器拦截器
环绕通知相当于拦截器。拦截切入点,检查参数和方法。如果不想让方法执行,直接不执行process(...)即可
拦截器配置类需要实现WebMvcConfigurer,注入拦截器,并添加对应的拦截路径。
实现过滤器类,需要让这个类实现Filter类,实现init,doFilter,destory方法。
过滤器和拦截器差异:
拦截是基于反射机制,过滤器是基于函数的回调机制
定义拦截器不需要依赖servlet容器,过滤器需要
拦截器可以被多次初始化,但过滤器只能在容器初始化被初始化一次。
如果只想过滤具体特征的url。如果想要在请求被执行前添加一些内存监控或日志等,可以使用拦截器。
第八章:Junit
跑通Demo,单元测试挺重要。
主要是在原项目的基础上对控制层,业务层,数据持久层对代码测试。
其中业务层用到Mockito工具模拟Repo的输出。
通过断言对结果进行预期判断,看输出是否符合要求。
可以再看看文档:https://doczhcn.gitbook.io/junit5/index/index/what-is-junit-5
第九章:集成安全管理框架
springSecurityDemo:在configure(AuthenticationMangerBuilder auth)方法中设置用户的登录信息。包括用户名密码和角色。通过configure(HttpSecurity http)设置角色权限,设置哪些角色具有对url有访问权限。
SecurityWithDB:先运行MockRegister,在DB中插入用户名密码和权限。启动项目,根据设置的角色权限,访问url。
ShiroDemo:
Shiro框架主要有Subject,SecurityManger和Realms这三个核心组件组成。
- Subject组件表示“当前操作的用户”,可以用来获取当前用户的登录名和密码等信息。
- SecurityManager组件是Shiro安全框架核心,封装了安全模块的相关操作。
- Realm可以在服务端存储用户的授权信息。
一般流程:
- 创建实现安全管理的SecurityManger对象。
- Subject组件在封装好用户的登录信息后,向SecurityManger提交安全校验的请求。
- 在确认用户的登录名和密码后,SecurityManger从Realm中获取该用户的授权信息,判断是否有权限进行当前操作。
第十章mongoDB:
mongoDB用bson(增强的json存储数据),可以支持分布式文档存储,但是不支持事务。可用来管理海量的业务数据。
可以使用MongoTemplate或者JPA进行查询和增加。
第十一章,redis:
redis支持得五种数据类型:http://www.redis.cn/topics/data-types.html
redis命令:每种数据类型对应不同的命令。有对应命令组。http://www.redis.cn/commands.html
springboot+redis的demo:
springboot项目启动不加载数据库配置:https://cloud.tencent.com/developer/article/1793275
springboot+jpa+redis的demo:
拿到项目之后,启动redis,修改MySQL密码。根据model中的属性在数据库中创建一个student表,每个属性的类型为varchar
需要在idea里面配置数据库的信息,否则jpa的注解找不到数据表:Cannot resolve table "'xx"" in spring boot application
- 问题:如果某场景下,频繁访问不存在的数据,从redis中找不到数据,会一直访问数据库给数据库造成较大压力。
防止缓存穿透,通常做法是缓存null值和数据库中不存在的键值。
- 保存在redis时需要设置超时时间防止时间过长数据一直在内存中,造成内存溢出。有了另一个问题:应用在某段时间加入的数据,设置的超时时间都是一小时,一小时后会同时失效,对这些数据的访问都会被发送到数据库里面,可能造成数据库崩溃。造成缓存穿透。
可以将超时时间设置为整数+随机数的方式。
第十四章RabbitMQ
搭建Rabbit MQ工作环境,安装Erlang,设置环境变量,下载RabbitMQ。RabbitMQ和Erlang版本要兼容。进入RabbitMQ的sbin目录下通过命令启动。
安装环境及rabbitMQ:https://cloud.tencent.com/developer/article/1582235
启动报错解决:https://blog.51cto.com/u_15127673/3530602
RabbitMQDemo:启动RabbitMQ,访问url,通过中间件传输String和Object类型的消息。
ASyncDemo和RiskDemo,前者作为订单模块,后者作为风控模块。订单模块需要调用风控模块进行校验。两个模块之间实现异步调用。
第15章
第十六章springboot+vue前后端分离
运行后端项目。前端项目导入vscode,进入前端项目,终端运行npm run build,npm run dev,成功后打开。
备注:
数据库统一连接demo-database
posted on 2022-07-14 19:34 passionConstant 阅读(170) 评论(0) 编辑 收藏 举报