SpringCloud
认识微服务随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?
学习目标了解微服务架构的优缺点
单体架构单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。
单体架构的优缺点如下:
优点:
架构简单
部署成本低
缺点:
耦合度高(维护困难、升级困难)
分布式架构分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。
分布式架构的优缺点:
优点:
降低服务耦合
有利于服务升级和拓展
缺点:
服务调用关系错综复杂
分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:
服务拆分的粒度如何界定?
服务之间如何调用?
服务的调用关系如何管理?
人们需要制定一套行之有效的标准来约束分布式架构。
微服务微服务的架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立,独立部署和交付
面向服务:服务提供统一标准的接口,与语言和技术无关
隔离性强:服务调用做好隔离、容错、降级,避免出 ...
Javaweb-day14-Maven高级
Maven高级Web开发讲解完毕之后,我们再来学习Maven高级。其实在前面的课程当中,我们已经学习了Maven。
我们讲到 Maven 是一款构建和管理 Java 项目的工具。经过前面 10 多天 web 开发的学习,相信大家对于 Maven 这款工具的基本使用应该没什么问题了。我们掌握了 Maven 工具的基本使用之后,其实对于一些简单的项目的构建及管理基本上就没什么问题了。
但是如果我们需要开发一些中大型的项目,此时仅凭我们前面所学习的 Maven 的基础知识就比较难以应对了。所以我们接下来还需要学习 Maven 提供的一些高级的功能,这些功能在构建和管理 Java 项目的时候用的也是非常多的。
Maven高级内容包括:
分模块设计与开发
继承与聚合
私服
1. 分模块设计与开发1.1 介绍所谓分模块设计,顾名思义指的就是我们在设计一个 Java 项目的时候,将一个 Java 项目拆分成多个模块进行开发。
1). 未分模块设计的问题
如果项目不分模块,也就意味着所有的业务代码是不是都写在这一个 Java 项目当中。随着这个项目的业务扩张,项目当中的业务功能可能会越来越多 ...
Javaweb-day13-SpringBoot原理篇
SpingBoot原理在前面十多天的课程当中,我们学习的都是web开发的技术使用,都是面向应用层面的,我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇,主要偏向于底层原理。
我们今天的课程安排包括这么三个部分:
配置优先级:Springboot项目当中属性配置的常见方式以及配置的优先级
Bean的管理
剖析Springboot的底层原理
1. 配置优先级在我们前面的课程当中,我们已经讲解了SpringBoot项目当中支持的三类配置文件:
application.properties
application.yml
application.yaml
在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中的任意一种来配置都可以,那么如果项目中同时存在这三种配置文件,且都配置了同一个属性,如:Tomcat端口号,到底哪一份配置文件生效呢?
application.properties
1server.port=8081
application.yml
12server: port: 8082
a ...
Javaweb-day12-事务&AOP
事务&AOP1. 事务管理1.1 事务回顾在数据库阶段我们已学习过事务了,我们讲到:
事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。
怎么样来控制这组操作,让这组操作同时成功或同时失败呢?此时就要涉及到事务的具体操作了。
事务的操作主要有三步:
开启事务(一组操作开始前,开启事务):start transaction / begin ;
提交事务(这组操作全部成功后,提交事务):commit ;
回滚事务(中间任何一个操作出现异常,回滚事务):rollback ;
1.2 Spring事务管理1.2.1 案例简单的回顾了事务的概念以及事务的基本操作之后,接下来我们看一个事务管理案例:解散部门 (解散部门就是删除部门)
需求:当部门解散了不仅需要把部门信息删除了,还需要把该部门下的员工数据也删除了。
步骤:
根据ID删除部门数据
根据部门ID删除该部门下的员工
代码实现:
DeptServiceImpl
1234567891011121314151 ...
Javaweb-day11-登录认证
案例-登录认证在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的,所以我们今天的主题就是登录认证。 最终我们要实现的效果就是用户必须登录之后,才可以访问后台系统中的功能。
1. 登录功能1.1 需求
在登录界面中,我们可以输入用户的用户名以及密码,然后点击 “登录” 按钮就要请求服务器,服务端判断用户输入的用户名或者密码是否正确。如果正确,则返回成功结果,前端跳转至系统首页面。
1.2 接口文档我们参照接口文档来开发登录功能
基本信息
12345请求路径:/login请求方式:POST接口描述:该接口用于员工登录Tlias智能学习辅助系统,登录完毕后,系统下发JWT令牌。
请求参数
参数格式:application/json
参数说明:
名称
类型
是否必须
备注
username
string
必须
用户名
password
string
必须
密码
请求数据样例:
1234{ "username": " ...
Javaweb-day10-SpringBooot-简单curd
SpringBootWeb案例前面我们已经实现了员工信息的条件分页查询以及删除操作。 关于员工管理的功能,还有两个需要实现:
新增员工
修改员工
首先我们先完成”新增员工”的功能开发,再完成”修改员工”的功能开发。而在”新增员工”中,需要添加头像,而头像需要用到”文件上传”技术。 当整个员工管理功能全部开发完成之后,我们再通过配置文件来优化一些内容。
综上所述,我们今天的课程内容包含以下四个部分:
新增员工
文件上传
修改员工
配置文件
1. 新增员工1.1 需求
在新增用户时,我们需要保存用户的基本信息,并且还需要上传的员工的图片,目前我们先完成第一步操作,保存用户的基本信息。
1.2 接口文档我们参照接口文档来开发新增员工功能
基本信息
12345请求路径:/emps请求方式:POST接口描述:该接口用于添加员工的信息
请求参数
参数格式:application/json
参数说明:
名称
类型
是否必须
备注
username
string
必须
用户名
name
string
必须
姓名
gender
number
必须
性别, ...

