毕业设计(论文)-基于Spring框架的养生门店管理系统.doc_第1页
毕业设计(论文)-基于Spring框架的养生门店管理系统.doc_第2页
毕业设计(论文)-基于Spring框架的养生门店管理系统.doc_第3页
毕业设计(论文)-基于Spring框架的养生门店管理系统.doc_第4页
毕业设计(论文)-基于Spring框架的养生门店管理系统.doc_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题 目:基于Spring框架的养生门店管理系统英文题目:Health Care Venue Management System Based on Spring Framework 摘要 摘 要本课题设计了一个在线的养生场馆店务管理系统,采取软件即服务(Software-as-a-Service,简称 SaaS)的运营模式。它是一种通过互联网提供软件的模式,用户不需要购买软件,而是向提供商租用基于Web的软件,提高企业的经营效益。本系统采用Java语言和Spring框架开发,Java以微服务(Micro-Service)架构为系统整体架构,以阿里云(Alibaba Cloud)为硬件平台。所谓微服务架构,就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩容。这种架构天然适应当前快速发展的云计算平台。经过设计、开发和测试。本系统有较高的用户体验、可靠性,并且能够与在线预订、移动支付系统无缝对接,适应移动互联网带来的新需求。关键词:养生场馆管理; 微服务; 软件即服务; 阿里云 ABSTRACTABSTRACTIn recent years, with the rapid development of national economy and the gradual improvement of peoples living standard, people pay more and more attention to the quality of life. However, the traditional management software has many defects, such as high cost, poor flexibility, can not be online booking and payment, can not fully meet the needs of health facilities. This topic has designed an online shop management system, take the software as a service (SaaS, referred to as Software-as-a-Service) operation mode. It is a model of providing software through the Internet, users do not need to buy software, but to rent a provider of Web based software to improve the operating efficiency of enterprises.The system uses the Java language and Spring framework development, Java micro service (Micro-Service) architecture for the overall system architecture, with ALI cloud (aliyun) as the hardware platform. The so-called micro service architecture, that is, the entire Web application organization for a series of small Web services. These small Web services can be compiled and deployed independently, and communicate with each other through their respective exposed API interfaces. They cooperate with each other, as a Overall for the user to provide functionality, but can independently of the expansion. This architecture is natural to adapt to the current rapid development of the cloud computing platform.After design, development and testing. The system has a high user experience, reliability, and can book online booking, mobile payment system seamless docking, to adapt to the new needs of the mobile internet.Keywords:health venue management; micro-service; Software-as-a-Service; Alibaba Cloud I 目 录摘 要IABSTRACTII绪 论1第1章 系统开发的关键技术和开发环境31.1 各种软件架构的分析31.2 系统开发的关键技术31.2.1 Sping 框架Boot简介31.2.2 Redis数据库简介41.2.3 MySql数据库简介51.2.4 阿里OSS服务简介61.2.5 阿里大鱼服务简介61.2.6 微信公众号支付简介71.3 系统开发开发环境7 1.3.1 Maven简介7 1.3.2 IntelliJ IDEA简介8第2章 系统的分析与设计92.1 整体架构的设计9 2.2 项目目录结构的设计102.3 数据库设计122.3.1 员工管理相关表的设计132.3.2 主要业务管理相关表的设计142.3.3 后台员工管理相关表的设计15第3章 系统主要功能的实现163.1 基于Redis的用户单点登录163.2 基于阿里云OSS实现文件上传下载193.3 基于阿里大鱼的短信验证和通知213.4 微信公众号支付后台的开发21第4章 系统的测试244.1 单元测试244.2 集成测试274.3 压力测试29总结与展望32致谢33参考文献34附录1 基于Redis的单点登录源码36附录2 基于阿里云OSS实现文件上传下载源码3418附录3 基于阿里云大鱼的短信验证和通知45附录4 微信公众号支付后台的开发源码451附录5 单点登录单元测试部分源码61 绪论绪 论近年来,随着国民经济的快速发展和国民生活水平的逐步提高,人们越来越注重生活质量,养生服务成为越来越多人业余休闲的选择,各类养生类场馆和企业也随之迅速发展。然而,发展过程中越来越多的管理问题也涌现出来了,其中很多问题都出在管理软件上,如:传统管理软件功能难以适应店内业务的变化;传统管理软件无法与在线预订、在线支付系统对接;传统管理软件使用成本高昂。1 选题背景 SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟,它是一种通过互联网提供软件的模式用户不需要购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。SaaS与传统的门店管理系统相比,有以下优势:(1)更灵活的使用软件。用户无需购买软件,而改用向提供商租用基于 Web 的软件,不受时间地点限制,无需对软件进行维护,且软件的采购风险和投入更低。(2)更好的软件交付和产品优化。在线免费试用的 SaaS交付模式和传统软件交付模式相比,有着更低的销售风险、更高效的销售过程和单位产出,且 SaaS 服务商能获取用户对产品的使用情况,可优化产品设计。(3)符合时代发展的需求。SaaS更有利于信息流动、更有利于不同设备的屏读、更有利于信息的过滤、重组和共享。这种新的软件形式,满足了需求的本质,就好像我们一直说互联网,但却很少强调它的技术特性,而是对多种实现场景和未来场景的满足。 近年来,云计算技术的蓬勃发展,给分布式架构软件的发展创造了良好的硬件基础平台。常见的云平台如阿里云、甲骨文云平台、AWS(亚马逊)等。他们除了提供可以按需扩容(带宽、内存)的虚拟主机以外,还提供了构建分布式应用所需的软件中间间,如消息服务、对象存储,以及Redis、MongoDB、Mysql等数据库。云计算平台应将用直接剥离出去,将平台留下,做平台的始终做平台,做云计算资源的人专心做好资深的调度和服务。SaaS服务商只需要关注自己的软件功能表现,无需投入大量资金到后端基础系统建设。因此,云计算将大大降低分布式架构软件的开发门槛和运营成本。2 研究本课题的目的和意义本课题的研究重点是微服务架构在SaaS系统上的应用的。所谓微服务架构,就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩容。这种架构天然适应当前快速发展的云计算平台。本课题的研究重点是利用Spring框架、微服务架构以及各种第三方工具设计、实现一个面向养生门店管理的SaaS系统。3 SaaS系统的发展展现状如今,在市场上已经有一些成功的SaaS产品,如Salesforce、用友畅捷通、金蝶云之家等,但还没有专注于养生场馆的SaaS系统。因此,做一款个专注于养生场馆管理的SaaS系统,有良好的市场前景。4 设计任务及要求根据用户的需求和项目自身的特点,系统应该要有以下功能:(1)能满足具有门店的内部管理需求和主要业务需求管理功能。(2)具有一个常规网站后台的基本功能,如用户登录注册、图片上传下载等。有一个后台管理系统,能够对门店进行管理。(3)系统能稳定长期运行,及时发生意外情况也能保证数据安全。(43)具有移动支付(微信公众号支付)后台功能随着用户的增多,系统的处理能力能线性增长,不会降低用户体验。本项目将开发一个基于微服务架构的提供养生门店管理服务的SaaS系统。项目构建工具使用maven,系统所需的Redis、MySql、对象存储等均使用阿里云平台的服务。支付使用微信公众号支付。1 系统开发的关键技术和开发环境系统开发的关键技术和开发环境本章节先是分析了微服务架构方案相对传统JavaEE开发的优缺点,进一步阐述了微服务架构的优越性,再分析、阐述了系统实现所需要的相关技术和第三方服务,最后得出系统的整体设计方案。1.1 各种软件架构的分析传统的JavaWeb开发绝大多数都是单体式应用,即所有功能都由单个应用程序完成。它有这么几个缺陷:它内部虽然划分了模块化,但是都运行在一个进程中,任何一个出现问题都可能导致整体崩奔溃;单体式应用随着需求增多往往会变得庞大臃肿,开发效率越来越低;最后;单体式应用内部耦合度高,难以应用新语言或新架构。近年来,云计算技术飞速发展。所谓云计算,就是通过互联网来提供动态易扩展且经常是虚拟化的资源。通过横向扩展分布式计算节点的数量来获取更高的性能,是它相对传统托管服务器的最大区别。云计算平台正在成为互联网的基础设施。传统的JavaWeb开发绝大多数都是单体式应用,即所有功能都由单个应用程序完成。而传统单体式应用并不能充分利用云计算的优势。综上所述,本项目采用微服务架构。所谓微服务架构,就是把大的项目分成小的、功能单一、相互之间通过Rest接口连接的多个微服务。每一个微服务都可以独立运行并同时部署多个实例以提高并发性能。这种架构天然适应当前快速发展的云计算平台,是开发本系统的最佳选择。1.2 系统开发的关键技术一个完整的web系统需要有,处理用户登录登出、文件存储、数据持久化等基础功能,下面将简要介绍本系统的关键技术。1.2.1 Sping 框架Boot简介Spring 框架是一个轻量级的Java框架,它为开发Java应用程序提供全面的基础架构支持,。使我们能够专注于应用层面的开发。与EJB相比,使用Spring可以以“普通Java对象”(Plain Ordinary Java Object,简称POJO)为基础中构建应用程序,具有更低的侵入性。Spring框架的核心是Spring容器,主要提供依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect Oriented Programming,简称AOP)。依赖注入的概念。Java是一门面向对象的开发语言,完成一项功能常常需要多个对象协作。在一般开发中,我们都是直接用代码去创建对象的实例。这样,两个对象的实现就耦合了,改动其中一个很容易影响另一个,非常不利于持续开发和维护。依赖注入就是把对象的创建交个容器去完成,调用者只针对接口编程。二者的依赖关系放到程序外面的配置文件中或用注解声明。依赖注入可以让我们在开发分工中实现面向接口编程,降低耦合,实现面向接口编程;其次,可以更方便地进行单元测试,比如一些暂时没完成实现的类可以模拟注入。面向切面编程的概念。在软件开发过程中,不同功能模块的实现中往往有许多相同的业务代码,如日志、数据库事务。这一部分无法用面向对象的方法抽取到父类中。在Java中,可以通过预编译和运行期动态代理实现在不修改源代码的情况下给不同的模块动态统一添加功能,这种技术被称为AOP。Spring框架其它的功能,如MVC、JPA等,都是建立在Spring容器的DI和AOP功能之上的,可以看成是它的外加插件。所以,Spring框架具有极强的扩展性。然而,在过去使用Spring的时候,每多使用一个Spring模块,往往需要写许多的Xml配置文件,如对象依赖关系映射、数据库和实体的关系映射等。SpringBoot就是为了简化Spring开发而诞生的,每一个SpringBoot模块都能自动配置,只有少数业务相关的需要开发人员配置,极大的提升了开发效率。在本项目中,主要用到了以下模块:Spring MVC。接收、处理网络请求。Spring AOP。处理个接口和类的公共事务,如日志、事务等。Spring Data JPA。遵循JPA(Jave Persistence Application)标准的ORM持久化框架,底层用Hibernate实现。负责把数据持久化到MySQL。Spring Redis。连接Redis数据库。Spring Actuator。服务运行状况监控模块,只要映入了这个模块,它就会自动提供一些RESTful风格的接口。调用这些接口就能获取服务的cpu、内存、数据库连接等运行时状态。Spring Test.。单元测试支持模块。可以对单个接口进行独立测试。1.2.2 Redis数据库简介Redis是一个开源的键值对存储系统,支持多种值类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set,有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis为了保证效率,数据都是缓存在内存中,它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。Redis完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。下面介绍一下常用的Redis命令:select db:选择数据库,redis默认有名字为0-15的库。sset key value:存储一对键值对。get key:获取一个值。del key:删除一对键值对。keys key: key中可以带通配符*,返回所有符合的键。expire key million:给键值对设置过期时间,单位是秒,过期后会自动删除。ttl key:获取键值对的缓存时间,不存在返回-1,过期返回-2.ttl和expire命令配合可以做用户登录信息的过期。Ssubscribe topic:topic中可以带通配符*,订阅一个主题,一旦有主题符合,择接收事件。publish topic message:往主题上发布一个消息,所有订阅者都能受到。主题可以是任意字符串。在本项目中,选用阿里云提供的Redis云数据库来实现用户登录信息和临时数据的存储。1.2.3 MySql数据库简介MySql是一个关系型数据库管理系统(Relational Database Management System,简称RDBMS),最初由瑞典MySQL AB公司开发,目前属于 Oracle 旗下公司。它是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。并且,不同表之间可以建立外键约束,表内的字段可以添加约束条件,保证了数据的完整性。它的主要优势是:MySQL是开源的,不需要支付额外的费用。MySQL使用标准的SQL数据语言形式。MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。在本项目,选用阿里云提供的MySql云数据库来实现系统数据的持久化。直接与MySQL交互的模块是Spring Data JPA.它是一个遵循JPA(Jave Persistence Application)标准的ORM持久化框架,底层用Hibernate实现。1.2.4 阿里OSS服务简介阿里云对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。用户可以通过调用API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过用户Web控制台对数据进行简单的管理。OSS适合存放任意文件类型,不限文件数目和大小,无限的存储空间根据实际存储量无限扩展,解决传统硬件存储扩容问题。OSS使用起来方便快捷。它提供标准的RESTful API接口,丰富的SDK包、客户端工具、控制台,可以像使用文件一样,方便上传/下载、检索、管理用于Web网站或者移动应用海量的数据。它支持流式写入和读出,特别适合视频等大文件的边写边读业务场景。它还支持数据生命周期管理,可以方便自定义到期数据转入低成本的归档服务或者批量删除。OSS还有强大且灵活的安全机制。它有灵活的鉴权,授权机制。提供STS和URL鉴权和授权机制,及白名单,防盗链,主子账号功能;提供用户级别资源隔离机制,提供多集群同步机制(可选)。保证数据安全。本项目选用OSS来做静态文件存储,包括图片、归档文件、js文件和css文件等。实现动态资源和静态资源的分离,降低服务器压力。1.2.5 阿里大鱼服务简介阿里大鱼是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信、语音、流量直充、私密专线、店铺手机号等服务。我们可以用阿里大鱼来实现短信验证码和通知的功能。先要在大鱼网站上申请和充值,大鱼会给我们分配AppKey和AppSecret。然后配置短信模板,模板中可以带模板参数,用大括号包裹参数名。使用Http请求调用,在调用的时候,把Appkey、AppSecret模板参数、模板名称以及模板签名传过去即可。使用很方便。1.2.6 微信公众号支付简介在移动互联网时代,对于商家光有PC端和浏览器端是不够,必须要在移动端有流量入口,才能打开市场。微信是现在最流行的社交软件,在移动支付领域能与支付宝并驾齐驱,微信的公众号平台功能,拥有扫描二维码、拍照、录音、地图等功能,相当于是一个完整的操作系统,并且屏蔽了实际操作系统的细节。在原生开发中,同一个应用,需要在Android和IOS系统上各开发一遍,成本高效率低。对于绝大多数APP来说,其实并没有使用平台特有功能,也没有多大的硬件资源需求,这种双倍的投入完全是浪费的。因此,本项目的移动端选择在微信公众号平台开发,本系统作为公众号支付的后台系统。支付数据可以直接与订单相结合,解决了用户过去需要手动查询支付数据的麻烦。1.3 系统开发开发环境 本项目的开发环境是:硬件环境:CPU:Inter(R) Core(TM) i7-4790K CPU 4.00GHz RAM:8GB操作系统:windows 7软件环境:Java 1.8.0_66 Maven 3.0.5 IntelliJ IDEA 15 MySql 5.5 Redis .1 Maven简介Apache Maven是一个软件项目管理和综合工具。它提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。Maven项目的结构和内容在一个XML文件中声明,这个文件的名字是pom.xml(pom的全称是Project Object Model),这是整个Maven系统的基本单元。1.3.2 IntelliJ IDEA简介IntelliJ IDEA,是捷克JetBrains公司的产品,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。在本项目中选用它主要是出于以下几点:代码提示及其丰富。除了常见的Java代码提示外,在字符串中写SQL语句和正则表达式也能有语法提示,极大地提高了正确率。连接数据库后能自动根据表生成JavaBean。引入lombok库再配合IDEA的lombok插件,可以省略JavaBean的存取器方法书写,减轻编码负担,让代码更清晰。7 系统的分析与设计 第2章 系统的分析与设计 本章节将从整个系统架构出发,再分别分析和设计各个模块的功能。 2.1 整体架构的设计为了满足具高并发、高扩展性的系统性能要求。根据实际业务需求,系统被分成了5个服务模块:OpenApi:OpenApi是系统的唯一入口,责验证客户端有效性、验证用户合法性、检查用户权限。Web端和移动端都视作客户端,只处理与用户交互,所有的业务逻辑和数据存取都访问OpenApi层的接口,OpenApi之下的模块都放在阿里云的内网中,外界不能直接访问的,并且OpenApi被底层模块调用,以保证系统的层次明晰。SSO:Single Sign On,即单点登录。负责处理用户的登录、退出、用户信息设置、验证用户合法性等。每次OpenApi接收到请求,就先调用SSO解析请求中Authorization头,获取登录信息和权限。OpenApi再把登录信息连同原有的请求参数一起发送给底层的功能模块。Unipay:统一支付模块。封装了第三方支付的API。接受内部业务模块的调用,向第三方支付发起调用在获得了支付结果后,再回调业务模块。让业务与第三方支付的API解耦。所有的支付都会被记录到一张独立的数据库表中。OSS:Object Storage System,即对象存储系统。封装了阿里OSS系统的API。负责上传下载图片、文件,保存用户的操作日志。Service:业务模块,店务管理系统主要功能的实际实现者。涉及到用户修改持久化数据时都要调用OSS去写日志。暂时只有1个,如果未来业务需求增加,可以考虑根据业务边界划分成相对独立的多个。以上5个模块在编译打包完成后都是独立的jar包或war包,相互之间通过Rest接口交换数据,以JSON作为数据传输的格式。在并发访问高时,由于每一个模块都是无状态的,因此都可以部署多个实例,用负载均衡器来分配请求。唯一制约并发处理能力的就是数据库了.根据绘制了系统整体架构图,如下:图2-1 系统整体架构图2.2 项目目录结构的设计本项目是一个Maven项目,所以要符合Maven项目的结构要求,其中比较重要的目录和文件如下如下:/src/main/java:java源代码目录。/src/main/resources:资源目录,在打包时会打入jar包的根目录。/src/main/resources/perties:SpringBoot的配置文件,用于配置服务器名称、端口号、数据库地址、账号、密码、Redis地址等。/test/main/java:单元测试代码目录。/test/main/resources:测试用的资源目录。在运行单元测试的时候才可以访问到。/target:使用maven编译打包时生成的目录,里面有打好的jar包或war包,具体类型和名称都可以在pom.xml中配置。/pom.xml:maven工程的描述文件,用来配置所依赖的第三方库。下面以总项目的pom.xml文件为例,如下: 4.0.0 com.hrbx all pom 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE UTF-8 UTF-8 1.8 hrbx-api hrbx-ucenter hrbx-io hrbx-unipay hrbx-service domain hrbx-common hrbx-utils 在pom.xml文件中:和声明了一个项目在Maven仓库中的唯一标识声明了它是一个Spring Boot项目,父项目也有自己的pom文件,在那里Spring Boot引入了Spring Core和Spring MVC等常用类库。声明了项目内的子模块,每一个模块都有自己的pom文件。每个模块的目录结构都是一个标准的maven工程结构,以OpenApi模块的项目结构为例,如图:图2-2 OpenApi模块项目结构图2.3 数据库设计系统中需要用MySQL数据库来做数据持久化存储。在系统中,员工管理、主要业务管理和后台员工管理是相对独立的,于是我们把数据库表分成3大块。2.3.1 员工管理相关表的设计根据养生场馆的员工管理需求,我们可以抽取出以下表:(1)Tenant:门店(单店)。(2)Employee:员工(用户),与Tenant是多对一的关系。保存了用户的个人信息,用户登录系统所需的登录信息也是存在这张表上。(3)Item:项目。项目与员工是多对多的关系,需要Item-Employee关系表。(4)Item-Employee:项目-员工关系表。保存了员工能做的项目。(5)Role:职位,与Employee是多对多的关系,需要Role-Employee关系表。(6)Node:权限,与Role是多对多的关系,需要Role-Node关系表。(7)Role-Employee:职位-用户关系。(8)Role-Node:职位-权限关系。下图完整地展现了员工管理相关表的关系:图2-3-1 员工管理相关表的关系图2.3.2 主要业务管理相关表的设计根据养生门店的主要业务逻辑,我们可以抽取出以下表:(1)Floor:楼层。与Room是一对多的关系。(2)Room:房间。(3)ItemCategory:项目分类,与Item是一对多的关系。(4)ProductCategory:商品分类,与Product是一对多的关系。(5)Product:商品。(6)Order:订单,与Tenant是多对一的关系。(7)Service:服务(养生行业内称为:钟),是订单与项目的关系表。(8)Company:公司(连锁店),与Tenant是一对多的关系,因为Tenant允许是单店,所以Tenant中并没有外键指向Company,所以需要关系表Company-Tenant。(9)Company-Tenant:公司-门店关系表。下图完整地展现了门店主要业务相关表的关系:图2-3-2 主要业务管理相关表的关系图2.3.3 后台员工管理相关表的设计根据后台管理(简称admin)的需要,我们可以抽取出以下表:(1)admin_user:后台用户表。保存后台用户登录信息。(2)admin_node:后台权限表。(3)admin_role:后台职位表。与admin_node是多对多的关系。(4)admin_access:后台职位-权限关系表。(5)admin_role_user:后台职位-用户关系表。(6)ad:后台广告表。用于存放系统对门店的通知。下图完整地展现了后台相关表的关系:图2-3-3 后台员工管理相关表的关系图14 系统的分析与设计系统的测试第3章 系统开发的关键技术和开发环境本系统的关键部分是单点登录、文件上传下载、短信验证和通知、微信公众号支付后台的开发。3.1 基于Redis的用户单点登录登录模块是可以部署多个的,所以登录信息不能存到它的内存中。因此,我们需要1个公共的登录信息存储装置,那就是Redis。Redis本身有事务控制,可以保证数据的一致性。具体步骤如下:(1)配置访问redis所需要的第三方库。要在SpringBoot中使用Redis。首先,要在pom.xml中加入redis模块的依赖。如下:org.springframework.bootspring-boot-starter-redis(2)在perties中配置连接redis所需的参数,如下:spring.redis.host=73 /redis所在主机的IPspring.redis.password=123 /redis的密码spring.redis.port=6389 /redis的端口spring.redis.pool.max-active=8 /redis连接池的最大活动连接数spring.redis.pool.min-idle=0 /redis连接池的最小空闲连接数spring.redis.pool.max-wait=1000 /redis连接池的最大等待连接数(3)在代码中,使用Spring的注解Autowire就可以获取RedisTemple的对象了,它是用于操作redis的类。如下: Autowire /自动注入redis访问类Private RedisTemplate redisTemplate;(4)下面定义出单点登录的接口,附录1中有它的部分实现。如下:/用户服务类public interface UserService /登录,生成一个登录信息Session,转换成json格式并存到redis中, public Session login(LoginForm loginInfo); /登出,把登录信息删除 public boolean logout(String token); /解析token,返回redis里登录信息 public Session parseToken(String token); /再生成一个跟Session对应的唯一标示token public String buildToken(Session session); /存往redis public boolean putToRedis(String key,String value,Long expire); /从redis里取 public String getFromRedis(String key);/用户登陆提交的信息的JavaBeanDatapublic class LoginForm private String code; /用户所在门店的编号 private String loginName; /登录名 private String password; /登录密码/用户登录信息Javabean,Datapublic class Session /登录信息在redis的唯一id,即键 private String id; /用户信息在MySql数据库中的唯一id private String identityId; /用户登录时的13位毫秒值 private long loginTime; /具体的用户信息 private UserInfo userInfo;/保存的用户信息的JavaBean,它将被转换成Json存在redis里Datapublic class UserInfo private Object authorities; /权限,实际是一个无限级的Map /还有其它字段,与本节内容无关,省略(5)用户登录过程流程,流程涉及的英文名和上述接口一致,如图:图3-1-5 用户登录过程流程图(6)用户解析身份过程流程,流程涉及的英文名和上述接口一致,如图:图3-1-6 用户解析身份过程时序图3.2 基于阿里云OSS实现文件上传下载使用阿里OSS基本步骤如下:(1)首先要去阿里云官网注册账号,申请OSS,获取一些参数。然后把这些参数配置在perties中,如下:api.oss.accessKeyId =eBeficc97TZsx2KBapi.oss.accessKeySecret =oDbl0nbnoObZA5qiMrZvOvRBUBhWlwapi.oss.imageEndpoint =api.oss.imageBucketName =image-test-devapi.oss.logEndpoint =api.oss.logBucketName =log-test-dev这些参数中,Endpoing是申请时选定的阿里数据中心域名;accessKeyId和accessKeySecret申请OSS服务成功后能获获得;bucketName相当于是存储的根目录。本项目中需要分别存储图片和日志,所以分别开通了2个bucketName:image-test-dev和log-test-dev。(2)我们还要约束存储在OSS中文件的目录结构,因此另外加入几个配置:api.jsz.image=logo,tenant,room,item,employee,cert,sign,cemployee,qrcodeapi.jsz.image.enablerootcache=employee,cemployee,cert,mon=ad,url,knowledge,example,iconapi.leileme.image=ulogo我们还需要在pom.xml中加入阿里OSS的依赖,如下: com.aliyun.oss aliyun-sdk-oss 2.2.1 (4)OSS模块的实现代码放在附录2,它的基本存储过程流程如下:图3-2 OSS模块存储过程时序图3.3 基于阿里大鱼的短信验证和通知开发阿里大鱼和开发OSS类似,基本步骤如下:首先要去阿里大鱼官网注册账号,申请短信服务,并且配置短信模板。每一个模板在使用的时候都要穿模板名称和模板编号,所以在配置文件中要增添动态的配置节点,如下:sms.alidayu.template.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论