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编辑  收藏  举报