收藏 分销(赏)

Spring Boot 2.6.0电商网站开发实战.pdf

上传人:Stan****Shan 文档编号:1239658 上传时间:2024-04-19 格式:PDF 页数:61 大小:3.64MB
下载 相关 举报
Spring Boot 2.6.0电商网站开发实战.pdf_第1页
第1页 / 共61页
Spring Boot 2.6.0电商网站开发实战.pdf_第2页
第2页 / 共61页
Spring Boot 2.6.0电商网站开发实战.pdf_第3页
第3页 / 共61页
Spring Boot 2.6.0电商网站开发实战.pdf_第4页
第4页 / 共61页
Spring Boot 2.6.0电商网站开发实战.pdf_第5页
第5页 / 共61页
点击查看更多>>
资源描述

1、卷首语基于最新 Spring Boot 2.6。课程全面覆盖 Spring Boot 2.6 新特性、自动化配置原理、电商网站需求分析、架构设计、高并发电商网站架构、微服务架构、UML 绘图。实战 MySQL 8.0 数据库、Redis 高并发缓存、MongoDB 数据库、安全机制、性能监控、高级面试题等热门知识点。Java 工程师必备,书籍结合视频讲解,学习 Java Spring Cloud 微服务架构的必经之路。目录Spring Boot2.6 电商网站实战之需求分析和架构设计5一、电商网站需求分析6二、架构设计8三、电商系统模块架构图8四、三层架构(前后端分离)10五、创建第一个 Sp

2、ring Boot 项目11Spring Boot2.6 电商网站实战之搭建架构连接 MySQL17一、三层架构17二、使用 Spring Data 简化 MySQL 数据访问18三、Spring Data(2.6)实战 MySQL20四、Spring Data JPA 框架21五、实操代码展示21Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物28一、移动 App 搜索附近的人的原理28二、LBS 搜索附近的 X-解决方案应用技术28三、Spring Boot 2.6 实战 MongoDB 5.0 搜索附近的人车物31四、NoSQL 排名第一 MongoD

3、B32五、安装 MongoDB 5.0 数据库34六、Spring Data 实战 MongoDB 数据库35Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.037一、背景介绍37二、Spring Boot 2.6 实战分布式缓存 Redis 6.038三、实战演练 Linux 安装 Redis6.242Spring Boot2.6 电商网站实战之安全机制51一、安全机制介绍51二、安全漏洞介绍52三、Java Spring Security 介绍53四、Java 安全框架 Shiro 介绍54五、Spring Security Demo 介绍54六、WebSecu

4、rityConfig 介绍55七、Web 全站安全验证配置55八、实战代码展示575Spring Boot2.6 电商网站实战之需求分析和架构设计Spring Boot2.6 电商网站实战之需求分析和架构设计侠客资深架构师视频链接:https:/ Spring Boot2.6 项目Spring Boot 是目前应用比较广泛的一种 Java 框架,java 语言亦也是比较普遍的一种编程语言。目前,企业的应用开发模式主要为前后端分离,并且在开发过程中分成了很多个团队,系统庞大,需求复杂,迭代速度也不同。因此,大多数企业都采用了项目独立的微服务架构。其目的首先是拆解业务系统,独立敏捷开发,适应快速变

5、化的需求迭代;其次是将系统解耦,各个团队独立开发,专注特定业务领域,实现业务拆分,以方便后期的 API 复用;再次,可以分摊风险,保证项目的正常运行,不会因为某一个成员的流失而导致整个项目停摆。一般而言,创业公司/小公司更倾向于全栈型开发工程师,一个开发人员就能熟练使用前后端全部技术,能够节约成本,后期再慢慢扩充团队。与之相反的大公司的开发模式,主要倾向于复杂的多团队独立开发模式,比如现在流行的微服务架构。大公司系统庞大复杂,分工明确,讲究术业有专攻,只需要开发人员熟练地掌握某一方面的技术即可。Spring Boot2.6 电商网站实战之需求分析和架构设计Spring Boot2.6 电商网站

6、实战之需求分析和架构设计电商网站的需求分析主要包括以下几个部分:用户需求文档产品原型,UI 界面用例 Use Case流程图整个开发流程中存在以下几种角色:后端开发工程师,其中 Java 程序员的主要负责后端 API 开发、数据库的设计,此外还有使用 Spring Boot 进行开发定义的后端开发工程师,还可以细分为 DBA 数据库工程师、大数据架构师。架构师在了解完整个项目的需求之后,需要考虑使用什么架构。Spring Boot2.6 电商网站实战之需求分析和架构设计Spring Boot2.6 电商网站实战之需求分析和架构设计如今很多大学的计算机开发课程比较陈旧,与当下互联网公司的实际应用

7、脱节,没有跟上企业最新的技术需求。从某种角度来看,一些大型互联网公司的技术课程质量不一定比大学差,如京东、今日头条、阿里等,甚至可能更胜一筹,因为他们的技术知识都经过了实践的检验、总结和沉淀。Spring Boot 可以用来开发电商后台微服务 API,但是它还提供了一个更好的选择SpringCloud 微服务。目前,很多 App 的商推荐功能,如淘宝的商品推荐、抖音的视频推荐等,主要依靠推荐算法和大数据的分析功能。上图大致展示了基本的开发流程,但每个电商平台的推荐算法都有所不同。此外,当今基于大数据的营销推荐可以做到非常精准。可以通过模拟的淘宝电商平台,小公司一般只需要使用三层架构。后续随着业

8、务的发展可以扩展至五层、六层等更复杂的架构。Spring Boot2.6 电商网站实战之需求分析和架构设计Spring Boot2.6 电商网站实战之需求分析和架构设计中大型网站 Spring Cloud 微服务架构图如下:五、创建第一个 Spring Boot 项目下图为 Spring Boot 开发环境准备:1、Spring Boot2.6 实战 DemoSpring Boot2.6 电商网站实战之需求分析和架构设计Spring Boot2.6 电商网站实战之需求分析和架构设计在 Eclipse 工具里搜索 spring tools 安装即可Spring Boot2.6 电商网站实战之需求

9、分析和架构设计Spring Boot2.6 电商网站实战之需求分析和架构设计第一步:浏览器测试 API第二步:选择对应的功能。第三步:等待容器拉包。第四步:启动器展示。第五步:接口层的模拟接口。具体代码展示如下:Api(tags=User 用户相关接口,description=提供用户相关的 Rest API)RestControllerRequestMapping(/user)public class Userscontroller Api0peration(新增用户接口)PostMapping(/add)public boolean addUser(RequestBody User use

10、r)return false;Api0peration(查询用户接口)Spring Boot2.6 电商网站实战之需求分析和架构设计16GetMapping(/getAll)public List getAll()List list=new ArrayList();for(int i=0;i Spring Boot2.6 电商网站实战之搭建架构连接 MySQLSpring Boot2.6 电商网站实战之搭建架构连接 MySQL侠客资深架构师视频链接:https:/ API 服务的架构实现公司平台,这种前后端分离的架构主要是出于对业务需求、高并发问题的考量。目前数据库以 MySQL 为主,后期可

11、以根据需要在NoSQL 数据库(如 MongoDB、Redis)中进行扩展,这是一个循序渐进的过程。将早期的基础架构搭好后,能够更容易地进行微服务架构升级的改造。三层架构指的是显示层、业务逻辑层和数据访问层。顾名思义,每一层都有自己的职责,这与计算机编码规范相关。其中,业务逻辑层是由项目代码统一封装业务逻辑,但由于翻译问题存在一定的概念混淆,如 API 服务接口早期叫 Web Service,现在是 Rest Service。首先需要提前安装 MySQL 以及 MongoDB、Redis。对于 JAVA 开发,早期可以使用原生JDBC 或者 Mybatis 等其他框架,目前 Spring 提供

12、了 Spring Data 开源框架以简化数据库访问,可以直接在底层使用。在 Spring Data 框架的支持下,我们可以配置 Template 或者 Repository 来简化数据接口的编写工作,这样在使用 Java 进行增删改查时,和数据库的交互会相对简化很多。在做微服务时常常会看到一个词Domain(领域),它在软件工程领域指的是业务领域,如金融业务、支付业务、商品业务等,这些都是单独的业务领域,每个领域都有自己的规则。实际项目中,难以实现覆盖每个数据库,因此只需要覆盖使用频率比较高的那些数据库,Spring Boot2.6 电商网站实战之搭建架构连接 MySQLSpring Boo

13、t2.6 电商网站实战之搭建架构连接 MySQL1.快速数据访问框架,提供统一的编程模型。2.强大的 repository 仓储和自定义对象映射 ORM 抽象。3.从 repository 方法名称派生动态查询接口。4.实现 Domain 域基类提供基本属性。5.支持透明审计日志(创建,最后更改)。6.可以自定义 repository 代码。7.通过 JavaConfig 和自定义 XML 命名空间轻松实现 Spring 集成。8.与 Spring MVC 控制器的高级集成。9.跨库持久性的实验支持。Spring Data 架构示意图:Spring Data 核心模块:1.Spring Dat

14、a Commons-支持每个 Spring Data 模块的 Core Spring 概念。2.Spring Data JDBC-对 JDBC 的 Spring Data 存储库支持。3.Spring Data JDBC Ext-支持标准 JDBC 的数据库特定扩展,包括对 Oracle RAC 快速连接故障转移的支持,AQJMS 支持以及对使用高级数据类型的支持。4.Spring Data JPA-JPA 的 Spring Data 存储库支持。5.Spring Data KeyValue-基于映射的存储库和 SPI,可轻松构建用于键值存储的 SpringData 模块。Spring Boo

15、t2.6 电商网站实战之搭建架构连接 MySQLSpring Boot2.6 电商网站实战之搭建架构连接 MySQL3.Spring Data 简化连接不同的数据库。4.使用 Spring Data JPA 框架连接 MySQL。5.当然也可以使用原始的 JDBC。6.默认底层使用 Hibernate 框架。7.支持 Repository 仓储模式。8.引入最重要的 2 个包。9.spring-boot-starter-data-jpa。10.MySQL-connector-java。注意:第十个依赖(MySQL-connector-java)非常重要。四、Spring Data JPA 框架

16、Spring Data JPA 框架具有以下特性:Spring Data JPA 简化数据访问层的开发工作。基于 Spring 和 JPA 构建存储库的完美支持。支持 Querydsl 谓词,从而支持类型安全的 JPA 查询.Domain 类的透明审核。分页支持,动态查询执行,集成自定义数据访问代码的能力。在引导时验证Query 带注释的查询。支持基于 XML 的实体映射。引入EnableJpaRepositories,基于 JavaConfig 的存储库配置。五、实操代码展示1)快速创建 Spring Boot 项目的两种方式:第一种,在浏览器中输入网址 start.spring.io 进入

17、官网,勾选 Maven Project,Language栏选择 Java,最后选择好对应的版本,加入对应的依赖即可,点击 GENERATE CTRL 将项目打包好,导入对应的包即可使用。Spring Boot2.6 电商网站实战之搭建架构连接 MySQLSpring Boot2.6 电商网站实战之搭建架构连接 MySQL创建一个 Entity 包,在其包下创建一 User 的实体类进入数据库查看对应的字段实体类 User 代码展示如下:/两种方法生成 get set 方法/使用快捷键一键生成/加入 Lombok Config 依赖,再添加Data 注解package com.alibaba.e

18、ntity;/Data 使用该注解可以不用生成 get set 方法public class User private Integer id;private String name;private String password;public int getId()return id;public void setId(int id)this.id=id;public String getName()return name;public void setnNme(String username)this.username=name;public String getPwd()return pw

19、d;Spring Boot2.6 电商网站实战之搭建架构连接 MySQL24public void setPwd(String pwd)this.pwd=pwd;在 Application.properties 下添加如下配置:spring.application.name=SpringBoot260Demoserver.port=8088spring.datasource.url=jdbc:MySQL:/localhost/alibaba?useSSL=false&serverTimezospring.datasource.username=rootspring.datasource.pas

20、sword=1234qwerspring.datasource.driver-class-name=com.MySQL.cj.jdbc.Driverspring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialectUserRepository 类代码展示:package com.alibaba.repository;import java.util.List;口public interface UsersRepository extends CrudRepository Query(select u from Users

21、 u where u.name=?1)public List getUserByName(Param(name)string name);Query(select u from Users u where u.name=?1 and u.password=?2)public Users getUserByNameAndPassword(String name,String password);Query(select u from Users u where u.id=?1)25Spring Boot2.6 电商网站实战之搭建架构连接 MySQLpublic Users getUserById

22、(int id);在 pom.xml 中添加以下依赖:org.springframework.bootspring-boot-starter-data-jpa刷新 Maven 更新 jar 包UserController 代码展示如下:package com.alibaba.api;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import com.a

23、libaba.entity.Users;import com.alibaba.repository.UsersRepository;RequestMapping(/getAll)RestControllerpublic class UsersController Autowired UsersRepository userReposity;RequestMapping(/getAll)public List getAll()return userReposity.getAl1();Spring Boot2.6 电商网站实战之搭建架构连接 MySQL26启动项目查看是否报错进入浏览器输入以下指令

24、:Localhost:8088/users/getAllUserDAO 类的代码展示如下:package com.alibaba.dao;import java.util.List;import com.alibaba.entity.Users;import com.alibaba.repository.UserRepository;public class UsersDAO Autowired UserRepository userReposity;public List getAll(String name)return userReposity.getUserByName(name);进

25、入 UserService 层更新代码:Importorg.springframework.beans.factory.annotation.Autowired;import com.alibaba.dao.UsersDAO;import com.alibaba.entity.Users;public class Userservice Autowired UsersDAO userDAO;27Spring Boot2.6 电商网站实战之搭建架构连接 MySQLpublic List getAl1(String name)return userDAO.getUserByName(name);进

26、入 UserController 层更新代码:RequestMapping(/users)RestControllerpublic class UsersControllerrAutowired Userservice;RequestMapping(/getAl1/name)public List getAll(Param(name)string name)/String name=java;return userservice.getAl1(name);Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物Spring Boot2.6 电商网站实战之 Mongo

27、DB5.0 搜索附近的人车物RedisElasticSearchMySQL:SPATIALINDEXPostgresqlPostGis 索引MongoDB 不仅提供了二维和三维的球面体系,还可以指定多边形的搜索策略。Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物安装好 MongoDB 后,首先要建立一个基于经纬度的数据记录作为索引,供客户端调用。客户端 APP 调用索引后,即可很快查询到所需数据。但这里还需要指定半径 r。在二维平面上,搜索圆圈内的点才有意义。基于半径对搜索

28、数据提前进行过滤,能够优化搜索性能。比如共享单车一般搜索附近 200 米或 500 米以内的车辆,距离太远用户也不会考虑使用。在规定半径内搜索不到车辆时,则会增加半径。搜索范围越广,搜索速度越慢。除了限制搜索半径,还需要限制返回的数据。比如限制返回最多一百辆或最多十辆的数据。此外,比如打车平台的后台有人工或辅助程序的订单调度系统。司机可以主动刷新订单列表,搜索附近用户的订单,也可以通过 APP 平台派单给附近的司机。派单策略比较复杂,可以基于司机等级、信用、好评、当天累计单量、车辆是否空载等因素来综合决策。三、Spring Boot 2.6 实战 MongoDB 5.0 搜索附近的人车物Spr

29、ing Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物首先,启动 MongoDB 数据库服务。仓储模式需要配置文件和数据库地址。Mongo shell打开一个命令行,对接 MongoDB 的服务链接,发送给客户端,随后直接启动即可。启动以后,MongoDB 会自动创建一个日志文件和数据文件。此外,它还提供了可视化的管理界面。相比于MySQL 等关系型数据库,MongoDB 并不需要提前创建数据库,使用上更加灵活。那么,仓储层如何与数据库进行交互?首先,保存一个自定义对象。比如搜索附近的车

30、辆的属性有车的名字、经纬度,也可以加一些编号比如车牌号、车的颜色、司机的名字、司机的手机号等。接下来是与 MongoDB 进行对接。定义一个 user 或者汽车 car 的类型,搜索的时候会涉及到对二维数据的过滤问题。简单的数据可以直接用仓储进行,稍微复杂一点数据可以通过自定义参数查询接口过滤后再进行封装Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物六、Spring Data 实战 MongoDB 数据库代码实操演示首先加入 MongoDB 的依赖:org.springfr

31、amework.bootspring-boot-starter-data-mongodb从 MongoDB 官网下载 MongoDB=选择社区版的 MongoDB(MongoDBCommunityServer)。下载完后在 Windows 上启动使用,进入 bin 目录找到 mongo.exe(客户端命令)、mongod.exe(MongoDB 的数据库服务命令)、mongos.exe(集群路由器)Spring Boot2.6 电商网站实战之 MongoDB5.0 搜索附近的人车物Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0Spring Boot 2.6 电商

32、网站实战之Redis 高并发缓存 6.0侠客资深架构师视频链接:【1024 创造营】基于 Mysql 和 MongoDB 的 Java Spring Boot 2.6.0 电商网站开发实战-学习中心-阿里云开发者社区()一、背景介绍当前的互联网公司比如淘宝、各直播平台、支付宝、微信、微博等都在大量使用 Redis 缓存来解决电商系统的高并发问题。以最典型的淘宝的双 11 为例,并发峰值订单能够达到 58 笔每秒。这个并发值在全世界的电商平台里都是第一位。此前传统的高并发方案大部分是基于IOE 实现的,而完全使用开源技术解决极大规模的电商高并发问题,阿里是第一家。Redis 在高并发系统中属于非

33、常重要的开源技术,经常被用来解决热点数据缓存类的场景,强大到几乎没有竞争对手。有一种说法是“Redis 是单线程,使用单线程实现高并发”,从严格意义上说,它是不准确的,Redis 整体上是多线程模式。Redis 本质上是内存读写操作,因为它是基于内存的来进行存取数据的。所以读取速度比基于磁盘 IO 要快很多,当然这也与数据结构算法有关。理论上,如果涉及到分布式架构,还需要考虑另外一个问题:请求消息的数量 QPS 和请求数据的大小。比如需要经过网络传输的时候,网络本身也要消耗资源。如果请求来自于不同的客户端,与服务器建立连接的时候会对服务器造成比较大的压力。而同一个节点、同一个客户端,在很短的时

34、间内发送重复的请求,性能则会高很多。所以压力测试的客户端和网络的分布也会影响测试的结果。一般的测试都是来自于同一个客户端模拟压力测试的场景。但双十一或其他某些高并发的场景,实际用户可能来自于全国各地。Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0Spring Data for Redis 是 Redis 缓存的快速开发框架,封装了简单友好的 API,并且基于 2.0 版本做了许多改进:1.支持多种 Redis 驱动程序/连接器的低级抽象(Jedis 和 Lettuce。JRedis 和

35、 SRP 过期)。2.支持 Spring Data Access exception 和 Redis driver exceptions 转换。3.支持 RedisTemplate 高级抽象封装 Redis 操作,异常转换和序列化工作。4.提供了Pubsub发布订阅模式支持(例如消息驱动POJO的MessageListenerContainer)。5.支持 Redis Sentinel 和 Redis Cluster 集群模式。6.支持 JDK,String,JSON 和 Spring Object/XML 映射序列化器。7.基于 Redis 实现了 JDK Collection。8.支持 A

36、tomic counter 原子计数器。9.Sorting and Pipelining 功能。10.专门 API 支持 SORT、SORT/GET 模式和返回批量值数据。11.实现了 Spring 3.1 缓存抽象。12.自动实现 Repository 接口,EnableRedisRepositories 支持自定义查找方法。13.支持存储库的 CDI。RedisConnection对象提供了对Redis网络连接的封装,并且简化了统一的接口功能定义,主要包括以下功能:1.RedisConnection 为 Redis 通信提供了核心组件。2.处理与 Redis 服务器后端的通信。Spring

37、 Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.01、下载安装命令如下:$wget https:/download.redis.io/releases/redis-6.2.1.tar.gz$tar xzf redis-6.2.1.tar.gz$cd redis-6.2.1$make2、启动服务器:$src/redis-server3、启动命令客户端

38、:$src/redis-cli4、新增查询 Key value:redis set 1 javaOKredis get 1“javaSpring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0使用开源的 Redis Desktop Manager 可视化管理客户端,可以很方便地管理 redis。安装完毕后,只需新建连接,设置 redis 服务器参数即可使用。Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.046Spring Boot 2.6 版本下,电商网站连接 Redi

39、s 服务器需要加入项目依赖,并且修改配置文件以及加入 Redis 服务器参数。项目加入快速启动需要依赖 spring-boot-starter-data-redis,具体代码如下:org.springframework.bootspring-boot-starter-data-redisio.lettucelettuce-monscommons-pool2redis.clientsjedis此处使用的是 jedis 驱动库,是一款相对比较成熟的驱动库,支持连接池机制,方便性能优化。配置文件参数如下:47Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0spring.

40、application.name=SpringBoot251server.port=8081#REDIS(RedisProperties)spring.redis.database=0spring.redis.host=192.168.1.100spring.redis.port=6379对于数据访问层,它也统一了仓储模式,封装了对于 Redis 缓存的 CRUD 操作。定义的接口如下:/*Package:com.alibaba*ClassName:RedisRepository仓储模式*Desc:阿里巴巴 Java Spring Boot 2.6 开发实战课程参考代码*/public int

41、erface RedisRepository Users find(Integer id);Map findAll();void save(Users user);void update(Users user);void delete(Integer id);实现如下自定义接口,以实现对于用户 User 的操作:Repositorypublic class RedisRepositoryImpl implements RedisRepository private static final String KEY=Users;private RedisTemplate redisTemplate

42、;private HashOperations hashOperations;Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.048Autowiredpublic RedisRepositoryImpl(RedisTemplate redisTemplate)this.redisTemplate=redisTemplate;PostConstructprivate void init()hashOperations=redisTemplate.opsForHash();public Users find(final Integer id)return(Users)h

43、ashOperations.get(KEY,id);public Map findAll()return hashOperations.entries(KEY);public void save(final Users user)hashOperations.put(KEY,user.getId(),user);public void update(final Users user)hashOperations.put(KEY,user.getId(),user);public void delete(final Integer id)hashOperations.delete(KEY,id)

44、;配置 RedisTemplate 的连接池和序列化器参数:49Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.0ConfigurationComponentScan(com.alibaba)public class RedisConfig Beanpublic JedisConnectionFactory redisConnectionFactory()RedisStandaloneConfiguration config=new RedisStandaloneConfiguration(192.168.1.100,6379);return new JedisCo

45、nnectionFactory(config);Beanpublic RedisTemplate redisTemplate()final RedisTemplate template=new RedisTemplate();template.setConnectionFactory(redisConnectionFactory();template.setValueSerializer(new GenericToStringSerializer(Object.class);return template;此处使用的序列化器是 GenericToStringSerializer。封装对于对象的

46、操作逻辑。本示例通过 RedisRepository 对象查询所有的用户信息:RequestMapping(/Redis)Controllerpublic class RedisController Spring Boot 2.6 电商网站实战之 Redis 高并发缓存 6.050Autowired/Spring 创建对象,注入进来private RedisRepository redisRepository;GetMappingpublic String hello()return Hello Java Spring Data Redis;RequestMapping(/addUsers)R

47、esponseBodypublic int addUsers()for(int i=0;i 100;i+)Users entity=new Users();entity.setId(i);entity.setName(Java Spring Boot 2.6x 实战 Redis:+i);entity.setPassword(password+i);redisRepository.save(entity);Map listUsers=redisRepository.findAll();System.out.println(listUsers.size();return listUsers.siz

48、e();Spring Boot2.0 之后,提供了 Redis 响应式接口,是基于 GEO 地理位置搜索的新特性支持,背后的原理是 GEOHash 算法。不同的数据库对于 GEO 搜索的支持存在差异,比如多边形搜索就会比较弱。而阿里优化后的 Redis 或 MongoDB 以及官方的 MongoDB 都能提供多边形搜索。Spring Boot 2.6 可以与 Redis 最新版进行对接,阿里的优化实现了集群包括 IO 请求处理的多线程支持,以支持更高规模的并发。51Spring Boot2.6 电商网站实战之安全机制Spring Boot2.6 电商网站实战之安全机制侠客资深架构师视频链接:h

49、ttps:/ Boot 2.6 安全机制具有以下特点:1.自定义实现安全验证2.Apache Shiro 开源框架3.Spring Security 开源框架4.大量使用 AOP5.依赖注入思想6.灵活扩展Spring Boot 2.6 安全机制如下图所示:Spring Boot2.6 电商网站实战之安全机制Spring Boot2.6 电商网站实战之安全机制这里面涉及到一个框架的漏洞问题,无论 cpp 还是 go,还是 java,都有程序的漏洞。像框架级的漏洞,一般公司都有专门的安全专家或者安全工程师应对。大部分互联网中的数据泄露或者网络攻击,都是属于此类普通的漏洞。比如 12306 网站出

50、现过用户密码和用户账号泄露,里面的手机号都是真实的;还有国内在 2013 年左右,出现了如 csdn 以及一些社交网站的大规模账号泄露。很多网站的数据库建立的用户密码字段都是明文的,而这其实应该是尽量避免的。三、Java Spring Security 介绍Java Spring Security 有如下优点:1.Spring Security 是功能强大且高度可自定义的 Java 开源安全框架。2.保护 Spring 应用系统的安全标准。3.Spring Security 专注于身份验证和授权。4.容易扩展、自定义开发。5.前身是 Acegi Security。6.提供安全认证服务的框架。7

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 研究报告 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服