Guns第十一节,3.0项目介绍与项目拆分

Guns第十一节,3.0项目介绍与项目拆分

Guns第十一节,3.0项目介绍与项目拆分管理模块的。

Guns第十一节,3.0项目介绍与项目拆分管理版本

Guns第十一节,3.0项目介绍与项目拆分管理依赖,maven实战。

Guns第十一节,3.0项目介绍与项目拆分,当parent打成jar包的时候,它不会包含这些jar包Guns第十一节,3.0项目介绍与项目拆分,其他模块都会包含一些许许多多的jar包,这个是父项目的特点。

Guns第十一节,3.0项目介绍与项目拆分core就是其他服务公用的类,还有公用的依赖,Guns第十一节,3.0项目介绍与项目拆分,所谓通用依赖,就是其他模块引用了这个core的话,其他模块就会有这个core里面的所有的通用依赖.

传递依赖,当你引入一个依赖的时候,你会引入它下面它里面包含的所有的依赖,就是所有的这些依赖。

通用依赖和传递依赖的区别:通用依赖默认通用依赖Guns第十一节,3.0项目介绍与项目拆分,compile当别人引用你这个gun-core的时候,它就会包含这个里面所有的compile的依赖。

传递依赖Guns第十一节,3.0项目介绍与项目拆分,就是说这个gun-core不需要这些依赖,如果别人引用core的话,如果需要的话,它会显式地传递这个依赖。

Guns第十一节,3.0项目介绍与项目拆分

Guns第十一节,3.0项目介绍与项目拆分这些都可能在别的服务在引用了core之后会用到的一些类。所以封装成一个公共的项目。需要使用的时候引入guns-core就可以了。Guns第十一节,3.0项目介绍与项目拆分

Guns第十一节,3.0项目介绍与项目拆分

Guns第十一节,3.0项目介绍与项目拆分这个项目是怎么运行的,运行的时候需要准备一个工具,因为这个服务它是提供rest-api的服务,他不是一个后台管理系统,所以说基本上没有页面,不能这样访问,所以说我们需要一个工具,这个工具叫postman,是谷歌上的一个插件,大家可以在谷歌应用上下载下来,这个工具是用来测试接口的,

Guns第十一节,3.0项目介绍与项目拆分,他可以post请求一些数据,还可以自己添加一些head。

下面介绍一些rest 服务的机制和流程。这个新项目的运行还需要打包,这个跟以前都一样,直接运行它可以Guns第十一节,3.0项目介绍与项目拆分,直接打包成jar,war包都可以。打包还是用maven命令打包Guns第十一节,3.0项目介绍与项目拆分,其实这个打包没变,打包之后还是从这个target里面找这个jar包就行了Guns第十一节,3.0项目介绍与项目拆分

运行起来了,然后说一下我们怎么访问一个接口,我们访问之前需要获取一个tokenGuns第十一节,3.0项目介绍与项目拆分,我们访问一个接口需要有一个令牌,这个令牌就是jwt tokenGuns第十一节,3.0项目介绍与项目拆分,打个比方就跟你古代进宫一样,你需要一个令牌才能进宫。我们的这些接口,常规的控制器Guns第十一节,3.0项目介绍与项目拆分,都是一些资源,我们访问这些资源需要一个令牌,这个令牌是什么形式呢,其实它就是类似于这样的一个东西,Guns第十一节,3.0项目介绍与项目拆分我们先获取它之后,然后带着令牌然后再获取资源。带着令牌怎么带呢,他是在header里面传入这个令牌Guns第十一节,3.0项目介绍与项目拆分。就可以访问这些资源了Guns第十一节,3.0项目介绍与项目拆分

大致的流程就是这样,先获取令牌,再拿着令牌访问资源。就这样获取令牌呢?通过一个接口Guns第十一节,3.0项目介绍与项目拆分Guns第十一节,3.0项目介绍与项目拆分,大家可以看到RequestMapping这个地址Guns第十一节,3.0项目介绍与项目拆分,它是写在配置文件里面。Guns第十一节,3.0项目介绍与项目拆分,所以我们在访问的时候,请求令牌的地址就是Guns第十一节,3.0项目介绍与项目拆分,然后我们需要请求的时候传入一个东西,我的请求令牌,其实这跟登陆差不多了,告诉你一个用户名密码,你登陆之后我颁发你一个令牌,然后你才可以访问资源,传给你这个控制器一个userName和password,Guns第十一节,3.0项目介绍与项目拆分

validate就是验证用户名,账号和密码是否正确,这里有两个实现类,第一个实现类就是写死了这个东西,Guns第十一节,3.0项目介绍与项目拆分简单的验证器Guns第十一节,3.0项目介绍与项目拆分,只要你账号和密码都是admin,我就通过验证。还有一个就稍微复杂一点,查询一下数据库,如果在这个数据库里面有这个username,那么就return true就是验证通过。

这个Guns第十一节,3.0项目介绍与项目拆分,如果账号和密码都是admin,都让你访问这个资源。所以说我们先请求这个auth接口Guns第十一节,3.0项目介绍与项目拆分。然后传给他userName和password。传完之后就获取到这个令牌。Guns第十一节,3.0项目介绍与项目拆分就是随机的一个字符串,做签名时候用的Guns第十一节,3.0项目介绍与项目拆分

签名的作用就是传输中的数据没有被别人篡改。大家可以看到我这里已经写好了Guns第十一节,3.0项目介绍与项目拆分,如果写错了得话,请求的时候带上账号和密码。大家可以看到它会提示账号和密码错误Guns第十一节,3.0项目介绍与项目拆分。得不到令牌了。

加入说我们就用这个令牌来访问hello这个控制器Guns第十一节,3.0项目介绍与项目拆分Guns第十一节,3.0项目介绍与项目拆分,然后我们看一下这个hello控制器Guns第十一节,3.0项目介绍与项目拆分,控制器需要RequestBody,RequestBoay这个参数请求的是一对jsonGuns第十一节,3.0项目介绍与项目拆分,所以我们请求的时候需要加点东西,首先加上这个tokenGuns第十一节,3.0项目介绍与项目拆分粘贴到这个header里面Guns第十一节,3.0项目介绍与项目拆分,这个值必须以bearer开头,这个呢是一个规范,可写可不写,但是在guns-rest里面必须写,因为我代码里面是这样实现的。然后加个Guns第十一节,3.0项目介绍与项目拆分,因为要传json,Guns第十一节,3.0项目介绍与项目拆分里面传一个这样的字符串Guns第十一节,3.0项目介绍与项目拆分

Guns第十一节,3.0项目介绍与项目拆分是怎么得来的呢,大家看SimpleObjectGuns第十一节,3.0项目介绍与项目拆分,她这里面就一个属性user,这样的格式其中sign和object是固定死了的Guns第十一节,3.0项目介绍与项目拆分,必须的穿这两个值,这个object里面它可以随便写一些json对象Guns第十一节,3.0项目介绍与项目拆分Guns第十一节,3.0项目介绍与项目拆分传完之后呢,我们有一个converterGuns第十一节,3.0项目介绍与项目拆分,它会把这样格式的一个json转化成只接收它Guns第十一节,3.0项目介绍与项目拆分,所以最后得到的结果就是user这样的json。转化到这个Guns第十一节,3.0项目介绍与项目拆分里面形成这样的一个对象。

下面简单说一下他的流程,Guns第十一节,3.0项目介绍与项目拆分

 

这个就是我们的我们通过test写一些测试,然后生成一个类似于这样的一个jsonGuns第十一节,3.0项目介绍与项目拆分就是把这个Guns第十一节,3.0项目介绍与项目拆分做一个签名,签名的过程就是这样的,首先我们把这个东西Guns第十一节,3.0项目介绍与项目拆分复制到这个里面Guns第十一节,3.0项目介绍与项目拆分

然后把randomKey放到这个里面Guns第十一节,3.0项目介绍与项目拆分,通过这两个东西把我们传输的数据进行签名Guns第十一节,3.0项目介绍与项目拆分,前面的过程就是md5签名。

把他的属性生成一个名字,Guns第十一节,3.0项目介绍与项目拆分然后再加上randomKey拼装起来进行md5加密,md5值设置到Guns第十一节,3.0项目介绍与项目拆分就是我们需要传输的对象,它包含了sign和object这个两个值,首先设置一下object就是simpleOject,sign就是md5加密的值Guns第十一节,3.0项目介绍与项目拆分,然后把Guns第十一节,3.0项目介绍与项目拆分转化成json,

这个就是我们需要传递的数据Guns第十一节,3.0项目介绍与项目拆分

粘贴一下然后点发送,Guns第十一节,3.0项目介绍与项目拆分

返回结果是请求成功Guns第十一节,3.0项目介绍与项目拆分
签名就是防止数据被修改。

之后再详细介绍一下jwt,还有签名机制的这些filter,然后分享一下项目拆分的一些技巧,其实项目拆分比较简单,如果你是复杂的一个项目,你要分好业务它就 好拆分了,因为项目拆分主要是按业务拆分,不是按功能拆分,我们的业务比较少,就一个后台管理系统admin和rest,没有关联的,这个就是一个后台管理系统的一个框架。

按业务拆分,功能的话,相应项目的dao,相应项目的service都放在一个dao下,功能拆分有一个好处就是当你的访问量提高的时候,做分布式的话,你拆分的每一个项目都可以跑到一个机器上,就是单独的部署起来,可以拓展,项目拆分的话方便拓展,把相同的一些东西抽出来,然后快速的搭建一些新的项目,新的模块,这个就是拆分的时候的几个基准。

parent就是对其他的子项目进行一个管理,比如说modulesGuns第十一节,3.0项目介绍与项目拆分,对版本号进行统一管理,对依赖统一管理,modules这样写的好处Guns第十一节,3.0项目介绍与项目拆分,比如说我们直接编译parent,他就会一下编译四个Guns第十一节,3.0项目介绍与项目拆分,他主要是方便了项目打包,项目测试,还有什么install,你执行Guns第十一节,3.0项目介绍与项目拆分,都会包含子模块的执行。并且它可以分析顺序,它一定会先打core,写的时候注意Guns第十一节,3.0项目介绍与项目拆分,这个点点是什么意思,这个模块在当前目录的上一级目录下的guns-admin

Guns第十一节,3.0项目介绍与项目拆分

Guns第十一节,3.0项目介绍与项目拆分