然后我们继续啊,下面呢,我们看一下基于插苗的 subin 应用的最后一块啊,关于 subin 插苗方式整合第三方框架啊。呃,在这地方我说一下啊啊,这个地方要整合第三方框架呢啊,在以往的其他课程当中,我们一般都是整合 my bytes 是吧?当然在这个地方内部我们也会去学习怎么去整合 my bytes, 但是在这我说一下我们这个地方 spring 方式整合第三个框架啊,他的高度会更加高一点,他主要给大家讲的一些整合的模式 啊,以后你在企业开发当中遇到叉苗方式死命整合其他的第三方框架,你就大概知道他使用哪种模式 啊,去整合的,就他具有一定的,然后你就是说配置的一个指导意义啊, ok, 行吧,那下边我们就往下看一下死命整合订单框架的两种整合方案啊。第一种整合方, 那就是不需要自定命令空间啊,命令空间这个东西大家现在已经清楚了是吧?啊,就是在我们的配置文件当中啊啊,这个地方,比如说我们 叉八 s 引 double 的是吧?或引 fvc 的,这叫什么?这叫自定命令空间。你需要引入个新的命令空间,然后内部使用他的标签时呢?比如说用 double 啊,我可以在这用个 double, 然后去引入哎,某些他内部封装的一些标签, 这,这能明白吧?哎,所以说我们第一种整合方案就是不需要自定命钱,比如说我们买 betis, 我们这个买 betis 在在给 simming, 就是整合的时候买 beitis, 所有的配置都可以用死不定原有的标签就是那个病标签 来进行配置,但是有些框架就不行,对吧?有些框架呢,他需要制定一些自己的逻辑,而这项逻辑呢又需要自己去解析, 所以此时你就需要自定一个命名空间,用自己命名空间内部的标签呢,去配置一些信息,最终呢用自己框架内部的解析器,对,你自定义的就是对你这个前缀引入的这个呃框架的标签,然后进行相应的解析 啊,比如说我们的 double, 对吧?哎,就是当然在今天的课程当中,我们为减少大家的负担啊,我们今天主要不是讲 double, 对不对?哎,我们主要讲然后引入第三方命运空间之后,他怎么去解析的?所以今天呢,我们就去讲一些死病自己的组件,因为死病自己本身有些组件是不是也引入 这个?这个就第三方面目空间呐,比如我们 contex, 我们的 n、 v、 c 这些是不都是引入一个新的面目空间?它并不是这个默认的 bins 这个面目空间,对不对?哎,这些我们都叫单独引入第三方面目空间,而在这个地方呢,它在然后进行一个配置时,是不是也用前置去引入 它的标签,对不对?它跟我们去呃解析 double 这过程是一样的,所以说我们今天就用这个 context 啊,去代替这个 double 啊,去讲解一下。如果你是自定义密密空间的话,它到底怎样去 来进行一个配置的啊?怎样去进行解析的啊?一个原理给大家讲解一下。
粉丝7.8万获赞28.9万

好,那我们继续啊,刚才呢,我们已经用这个构造方法啊,去可以配置我们的这个病,是吧?不管是有餐的还是午餐的,它本质都是我们的构造方法。那刨除这个构造方法之外呢,我们说还有一种就是工厂方式去使用,这话我们的病 啊,那么看一下工厂方式,工厂方式呢,在这我又给大家归结为三种啊,第一种叫共态静态工厂方法, 第二种呢叫实力工厂方法。第三种呢啊,实现我们的这个发翠病的方式,那第三种啊,在这我一句话半句话说不明白,但第一种第二种啊,可以稍微然后介绍一下啊,静态工厂方法说白就是说什么?就是我定一个工厂, 哎,我定一工厂就自定一个工厂,那这个工厂内部呢?提供静态方法,在这个静态方法内部呢,我就产生一个病啊,最后这个病呢,哎,我要交给死不认容器,然后去帮我管理, ok, 那第二种呢,神秘工厂方法呢啊,其实相对静态,就是说我有个工厂这工厂内部的方法呢,是非静态的 啊,那那最终这个非静态方法然后产生的病呢?就是法规值啊,最终我交给死亡容器,然后去管理啊, 他们其实最主要的区别是在于什么呢?在于静态工厂方法,他是不是方法是静态的啊?非静态工厂方法啊,他的这个这个方法是非静态的,所以我们在配置时候我们要知道静态工厂方法他在产生,这个就是在调用他静态方法时,我这个工厂静态工厂他不需要现有对象, 对吧?用静态方法直接然后这个内名去调静态方法就 ok, 但实力功能方法就不一样的。你这个,然后实力工厂必须需要工厂对象,然后再说用工厂对象去调,就用那方法啊,这是他一个最主要的 区别。行吧,那下面你就配一个吧,咱们配一个啊。呃,我们回到 id 当中。呃,首先在这呢,我再借一个 package 啊,就叫 factory 吧,叫 factory。 好,在这个内部呢,我去创建一个,就叫, 叫塞这个吧啊,叫塞这个,然后这个这吧,别叫塞这个呢,我叫 bean, 叫 mary be factory factory 是吧,哎,一可以吧迈并 factory 一好。创建好之后呢,内部我们提供一个静态方法就行, 塞这个反位值呢?你随便,我们就反个 do 吧。好吧, uzdao 啊,就叫 uzdao 啊。最终我在这 rat 一个 new 一个。 是不是写完的吧,写完之后,现在,然后我们去产生 b。 原先是怎么产生的?就原先是不是使用容器,他通过这个权限的名 就是那个全包明啊。反射创建好对象放到容器当中,是吧?而现在呢,是我们的 siri 这个容器帮你去掉这个 a 的这个静态方法,最终将返回的这个对象存储到 spring 容器当中啊,是一个过程吧。好,那下面呢,我们主要在于怎么去配是吧?怎么去配?右键敲皮他的权限的名回到我们的配置文件当中, 哎,在这, 哎,你原先怎么配,现在你还怎么配? 比如原先我们是不是先配个这个这个这个 id 边我叫叫什么呀?叫尤泽 dld。 行吧,就用全线,里面是他他。那如果你这样配完之后,这个原先我配个普通的丢是不一样的,是吧,当你起重时,那死不定容器会干什么事呢? 会按照你的全限你名给你创建。创建对象就实拍对象吗?这个就走的是无端构造对不对?然后呢,创建完对象就是放到容器当中,那放到容器当中是不是这个并的有个并内幕呀?那此时的并内幕是不是叫 idu 在 d o e 对不对? ok, 但,但是呢,现在我是想找他的方法,所以说在这个地方你加什么呀?加个叫 factory measured。 指定他的那个方法啊,我的方法是不是就叫优字第优这个方法吧,是吧,哎, 所以说你在这就指定这个方法叫优则第优。那此时当你这样拍完之后,此被容器当看到时,哎,在在这个解析时,哦,发现哦,牛哥 faculty 没事的。那我知道呢,不是把他变成对象, 是找他内部的这个优字。丢这个方法,把这个方法的返回值啊,当做这个对象,再以你指定的 id 作为并内幕存储到容器当中, 这能明白吧。好,下面我们测试一下啊,先保证我的测试是没有问题的啊,这些代码我先干掉吧。有容器呢 盖的被子。我叫你什么名字?你猜。呸,你叫什么名字?是不是叫优字地优一对不对啊,在这优字地优一行吧。那就不强转的,不强转的我在这优字地。 我打一下地址就行。直行。 哎,稍等, 你看是没有问题。看看,别看第一个,第一个是我们的构造答案,那个 siris 构造答案的话啊,是不 u 字丢,最终我答应没有问题,是不是能创建吧。好,能创建,那其实在这个地方呢,我可以再加个断点走,往下走一步, 我们看谁啊?我们看那个,就是那个,当地时,对不对?在这有 bifac 又找不到了,他下边有个叫 best, 这呢,然后进去,然后有新勾他奥布这个斯啊,不是这个吧?哎。点进去,然后再点,你找是不是他有个优字地优一,是不?优字地优一吧,哎,优字地优一,你再点进去,发现这个优字地优一 是不就是 uzdui 瓢这对象对不对?哎,他对象是这个对象,并不是这个工厂对象啊,因为我这种配置此阵容器是能识别的, ok, 这点能听懂吧?大家回到这说,这种方有什么用呢?这么麻烦是不是? 那叫什么用啊? 大家想想啊,想想啊。第一个用处在于原先你在去呃,自己去创建这个病,让死病人去管,给的话,那你这个病在创建前后你是没有办法去执行其他代码的, 就是这个病,我说马上要创建呢,是吧?创建之前我想干点事,原先你不好干,但通过这种工厂方式那就 ok 了。比如在这个地方加个注视,就是说这个 并创建之前之前我可以让进行一些奇葩的音博技操作, 对不对?那在创建之后呢,是不是也可以进行一些其他业务规矩操作,比如把他踢到外边是吧?然后执行完之后最终再把他返回,这能明白吧?所以你 这个这个逻辑可以更加灵活一点。这是这是第一个,是吧?那第二个原因呢?大家想想,你看啊,还是说我们这些是不都是我自定义的吧? 啊?就是这个别翻水也好啊,这个优在第二安片好,是不是都是自定义的,是吧?啊?大家在想,其实有一些啊,有一些病是非我自定义的,就什么意思?人家炸包已经给你定义好的, 就其他诈包啊,给你定义好的,比如说你在开发时,你不可能都是自己定义的吧?你是不可能要有一些工具啊,或者有一些,然后第三方的一些诈包啊,对不对?那如果第三方诈包当中的,哎,某些病你也需要交给死不认去管是吧?你是不是得配置? 可能有时候这个病本身他就不是着通过有仓构造,无仓构造去生成的,是吧?他可能就是通过某些静态方法产生的,而那些病在配置时你就可以用这种什么呀?这种 静态构造就是静态工厂的方式把它配到四倍容器当中啊。打个比方,比如说大家知道我们这个什么呢? 啊?我在这写一个啊,大家知道我们当时在开发是我们的 ggbc 是吧? ggbc, gtbc, 是不是那个可耐神怎么去获取的 draw money? 这耽误我这没倒包啊,就 draw money 这点儿是不是有点可单身 条纹是吧?可耐克神,然后就尾代码呢?因为这没倒包,所有都爆红的是吧?哎,大家想,哎,就这就这个方法对吧?那比如说他这种的反折势必可耐克神 是不是可男神?那如果现在我想让死别人,哎,帮我去管可男神,那可男神怎么去产生呢?是不是通过然后一个内的一个方法最终产生的可男神呢?对吧?那此时我是不是就可以把它看成是一个静态工厂方法产生可男神? 但这种方式不会这么配啊,你不要讲着回去,真啊傻呵呵的咔咔的把那个可难事要配到容易当中,用这种方式是吧? 我就跟他打个比方,我现在暂时想不出来其他的呢,是吧?就是说有很多人非我最近的病,他的然后产生,确实是通过然后这种静态方法产生的。那此时我就可以用。哎,刚才学的这种什么呀?哎,静态工厂的方式进行配置啊。 好吧,那就是关于静态工厂方式配置我们的便啊。

好,那我们继续啊。刚才那么讲的病的处置化和消毁方法这个配置啊,其实比较简单,就是以你买色的跟迪斯特买色的是吧。但在这我需要强留一点啊。就是说,呃,他现在这个病的销毁跟病的销毁方法的吊用是两回事。 懂我意思吧。就是说有的时候你容器已经没有了。就是你说啊,你可以认扛 tix 这个对象已经在年轻当中已经没有了。那你说他对应内部维护的那些变对象还有没有 是是不也没有了吧?也没有了。但是为什么他方法没被吊用呢?是因为死不令没有执行到吊用销毁方法的那个步骤,这个容器就挂掉呢。这这这能懂吗啊。所所以说你要知道,有的时候问你这种这对象有没有没有呢?有的人会问为什么对象没有呢?不,不执行那个销毁方, 因为他可能还没有执行到消费方法。哎,这个容器就挂掉了,对应内部的币也没有了。币是已经销毁了是吧,但是方法是不是没办法调用是这意思,明白不?所以说我们需要显示的去关闭这个容器,让死命这个容器啊。嗯,知道哎,我马上要挂掉呢。挂掉之前我还要做一些善后的工作 哎。帮你去调用一下销毁方法。他是这意思啊。所以这一点大家要分清楚。好吧,我们稍微扩展个知识点啊。就是关于病的销毁就是这个初始化啊。咱说初始化,刨除我们自己去被那个写个方法指定 ins 麦词之外呢。他还有种方式啊,就是去实现一个移民声来接口 啊,深圳街口。深圳街口内部呢,然后有一个方法啊,这个方法就是一个这个。呃,哪呢?叫阿福特普普特斯赛的这个方法啊。那你这个方法内部要实现一些业务呢,本身 他也可以啊,被执行啊。所以说当你实现这个接口之后呢,死不定这个容器他在执行时,哎,发现哎,你这个并实现这个接口呢,他就会自动的帮你去调用什么呀? afterpropropecyce 这个方法。那下面我们这个要做做一下这个测试啊。呃,找到我们这个 还是 surveys 这儿是吧,我们为他呢去实现一个接口哎,就这个叫伊因伊尼说 messing 病是吧,他必然有一个为实验的方法。 这个什么叫 after property 赛特啊,这个其实你要翻译成中文叫什么呀? after 在什么什么之后是吧? property 是属性赛特设置是吧,在属性设置之后执行啊。这是什么东西呢?当然我们一会后边啊,后面去讲这个 对应病的生命周期的时候啊,我们会提到这个方法。在这呢,我们直接翻译就是在呃属性设置之后啊。其实说白就是什么呢?就是说我们知道我们的 siris 啊,内部是不是需要这个注入 dio 啊是吧, dio 然后注入给 saris 是不是这设计就是属性设置是吧,它执行之后,然后我们再执行这些, 呃,再调用这个方法,他是这个意思啊。那好在这个地方呢,我也打一句话,就叫 after property set 这个方法执行 哎,那选中你需要额外对应配置吗?不需要,因为接口是对应的一个规范是吧。而且这个 b 又在 spa 容器当中, spa 容容器他要去判定你到底实没实现这个接口, 如果判定时间这个借口呢,他自然的就会帮你调整一个方法。那豆就写完了。那选中呢?我们执行一下。 哎,我们看一下结果啊。首先看首先看 apt pro 的赛字有没有执行,是不是不是执行的吧。而处置化方法就是那个以逆的方法有没有执行,是不是也执行的吧?因为我这刚才配的时候没取消啊。是不是以逆的是吧?是不是还在这呢?就通过这个我们知道谁先执行 是吧? after proper size 他先执行是吧?也就意味着当这个病创造完毕之后,死 brain 这个容器对吧?他先帮你调用 after proper size 这个方法,再帮你调用是吧?一定 to message 这个方法。 这能懂吗?刚才我们通过这个名字说 after purple seize 它是在什么呀?在属性设置之后执行的。其实在这个地方你可以也可以进行验证啊。怎么验证呢?我们看一下啊。呃,我找到 我这个地方是不是有个属性设置是谁?就是那个邮字地区吗?对不对?好,在这个地方我再打一句话。呃,这个属性一设置是不掉赛的邮字地区方法是吧?好,在这打一句话。我就叫属性设置完毕。 好,现在我再去执行。再控制出来是不是先是创建对象, 然后创造了巨象之后发现你内部是不是需要注入个低欧吧是吧?就设置低欧吗?属性设置吗?啊,然后呢?我就再给你调这个赛特,然后优点低优设置属性 是吧?射转属性你看,再去执行 appoeproposes 这个方法,然后再去执行以逆腾这个方法是不是就完毕对吧?哎。 ok。 这是关于这个点这个方法呢,他是给我们生命周期啊, 在哪呢?到这呢,就实现你成 isn't 啊这个接口,然后对应的这个 apple plus 这个方法是跟我们生命生命周期相关的。所以在这呢,我给大家稍微补充一下啊。所以你在面试的时候,别人在问你哎,我这个对象串串完毕之后,想要做一些处置化工作,你现在有几种方式呢 啊?至少你有两种方式的吧。第一种就是我实我干什么呀,我写个方法,然后在配置的时候呢,哎,指定这个出手方法,你的麦四是谁?第二种就是你这个病呢,去实现什么啊,以你双方该司令病这个接口,然后去复写啊。 after protest 这个方法啊。 ok。

好,那我们继续吧啊,并且应该注入的配置啊,基本到这基本就差不多呢啊,我们再扩展一个小知识点,关于自动装配方式。首先说什么叫自动装配啊?那回到我们刚才这个 这个代码当中,我们现在在进行一个并的配置时,他如果内部需要某些组件的话,我们是不是人为手动的给他注入进去的,是吧?这种然后人为手动的组就是注入进去呢,我们把叫做人为的手就是手动的一个 这个装配。手动装配方式是吧?那 project 之外呢,我们可以进行自动装配啊,我们把这些啊,咱同样都把它先注掉啊 主角,那什么叫自动装配呢?自动装配就是你不需要人为的通过 property 的标签然后给它啊配置它 自动的,要根据你指定的某一个呃这个要求,然后进行一个自动装,比如说啊,下边我这写到到底你是可以根据名字自动装配, 那如果你配置成根据名自动装配,如果他内表赛的方法他会自动的,然后去寻找你的容器当中有没有跟他名字相匹配的这个病,如果有的话,他会把把这个病自动的给你设置到赛的方法当中,对吧?还有就是 by type, by type 呢,我们把它叫做通过什么呀?类型 啊,比如说赛的方法内部我需要个 userdo, 对吧?它会从我的这个容器当中去找有没有类型为 userdo 的这个病, 如果有呢,它就自动给你 set 进去,就大概这个意思是吧?那在这其实设计一个问题,就是说如果你是通过这个名字,一般情况下我们肯定是不会重复的,对吧?因为我们 id 唯一标识是吧,并内描是 一般情况下不允许重复的啊。可是这个类型就不一定的,因为像 uzdo 这个接口类型可能对应的时间有很多是吧?当你然后在自动装配时,如果是根据类型装配,而我容器当中又出现很多同一类型的病,那这时候会 怎样啊?哎这写到呢会进行报错是吧?哎报错,因为他不能确定到底是哪个啊。好,那下面呢我们就去写一下啊,我直接靠背呢啊啊首先在这个地方呢,我有一个 这个 service, 然后呢我再去搞一个 do, 哎,搞个 d o, 比如我就叫 user d o 吧。好吧,然后呢我在这个地方去。呃这个 user service 我检查一下啊,这东西还说有点多啊, 把它,把它注一下都注掉啊,稍等,这样吧,这个走那到这是吧,然后再把上面这些 这些都除掉。好,那现在我代码就就有一个收方法是吧?呃有一个 d o 啊,有个 d o 的一个赛的方法啊,其他就没有了是吧?那在配织的时候呢,我可以干嘛呢?原因是不是在这配 properties 是不是?哎手动一个装配,那现在我需要在这地方干嘛呢?去加一个属性叫 auto where out of where out of where 主要用到的其实啊 no 啊 construct, 这你都不用管它是吧?就一个 by type, 一个 by name, 主要用到的是吧?比如现在我写 by name 根据什么? 根据名字去装配是吧?那根据名字装配是怎么去装配呢?那首先说名字装配是谁跟谁去匹配啊?哎我们看一下啊,这个 by name 是根据名字装配,它内部是有 set 方法,这个 set 方法后边这东西就是你名字 同样把首字描进行小写啊,然后跟谁去匹配呢?跟你这个容器当中的某个并的班那个并内幕, 当然并内幕这配的是 id, 这 id 是后期转换成并内幕,对不对?好,现在你就配个,然后 out where? 那我在我的这个测试代码当中, server 当中,这个授当中啊,这样 我打一下这个 userdo, 如果 userdo 有,而我的插苗又没有人为的去配 properties, 那说明它是不是自动帮我装备成功的?根据名字,这。 好,现在我去测试一下啊。呃,没问题,这代码都不用改,都不用改。好,我执行, 你发现有没有?有吧,这个收方法,收方法内部是不可以帮我去打印这个 d o, 而这个 d o 呢? 这丢是谁?这丢是不是?是不就是他?他又是谁?他是不是在 set 方法时给我复职的?那 set 方法是不执行呢?是不注入呢?那我在配置时又没有人为去配置,那是不就是 alto bear 它起的作用吧?自动装配的, ok, 那现在呢?我改一个名字 行不行?把它改成是不? user d o r, 那名字它一致吗?不一致呢?你再继续执行是不?答案就是 no, 名字匹配不上的,你这个地方叫 user de o r 对不对?而我这个地方赛的方法叫什么?叫 user d o 是匹配不上的,所以它就没有住进去, 但你改,那你改这是不也行?你改,这如果改成也改成二,那是不就一致的嘛?你再去执行, 你看是不是就行了。所以它的名字指的是 set 后边这个名字啊。 ok, 行吧,我把它还原,哎,把它还原,哎,还原。呃,这是我们的这个 by name 是 by name, 我们再换成 by type, 根据什么类型去装配?类型在装配,你在执行,首先说打印肯定没有问题, 是吧?哎,打也没有问题,那现在你再看,我如果把它改成二二二,有关系吗?没关系,因为它的类型是不是 uzdo? 那叫什么名字无所谓,是吧?因为现在是根据类型装配的,你再执行同样可以。哎,装配好 face 吧,但是如果你再搞一个,哎,再搞一个,把这个名字去掉,是吧?我上面这个叫这个,下面这个叫二,我是不看用的一个状态吧。好,你再去。 你这阵是报错了是吧?你看,你看,是什么呀?这就报错了吗?这是 dismo 震,这不仅一个,是不是又在丢啊?哎呀,这个 id 工具还还挺好,是吧?你看,报错了,报错其实跟那一样。跟那提示一样的是什么呀?你看,往往后看,往后看, 哎,这呢,说什么呀?说 expect, single matching bin, 说期望一个 butt, 但是呢, fund 几个,两个是不,一个二是不 都有啊?你再去掉它就没有问题了,能明白吧?哎,这是根据我们的这个名字或类型进行一个自动装配。

好吧,那我们继续啊,呃,到这呢,我们就把死不认他的一个默认标签啊给大家,然后说完呢,是吧?四个啊,变死,然后并 input 跟 universe。 那下面呢,我们再回头去看一下,我们这个 就非自定义命名空间的标签啊,我们说这个非自定义命名空间标签啊,他的使用过程,首先你要去引入人家的命名空间, 对吧?引,引入命名空间的时候你要指定个前缀,因为这个前缀是你在用到该命名空间那边的标签时,要用这个前缀去引用, 这意思吧,那这个然后他的一个解析呢?然后我们后期会讲,再讲 spring 去整合其他框架时啊,就在本部分我们给大家讲,然后现在呢,我只给大家说一下,然后怎么去引啊?这个引的过程我们要知道,那比如说呢,我就引几个吧啊?引几个啊,呃,把这些我把它去 去掉啊,刚才其实我们已经演出一个 contacts 了,是吧?哎,我们再演出其他的吧啊,比如说我现在要演 mvc 的就死不如演 mvc。 在开发时你这个要用这个标签的过程什么的。首先第一步我们需要导坐标 啊,去导入死就是死,不然 mvc 对应的坐标啊,因为它这个内部这个约束啊,就在人家那个对应的扎包内部封装着呢啊,所以你得导坐标,然后最终你引入它才有意义, 对吧?你没有找人家那个坐标,你即使引入秘密空间,报错不报错放一边是吧?你这边是没法解析的,因为解析这个对应标签的这个功能的那些代码 啊,都在哪儿啊?都在人家那个炸包内部封装了呢。所以第一步你要导坐标,比如说现在 spread vc 啊。呃,我找到 pom 一般那些, 比如我导一个叫 spring y 版 m v c, 那么导入坐标呢?第一步第二步呢,就在这改,只要是 spring 的东西,就是 spring 自己的组件,你可以在这直接改 copy 一份, 就说这地方变灰色,什么意思啊?这地方变灰色是代表这个空间,你引入呢,但是你并并没有用到他对应的那个标签,明白吧?比如 contex 这个空间有引入呢啊,但是我没有用到对应的标签,你比如说随便用一个吧, 你看你这样这样是不是就变色,就就就就就就不是灰色的,是吧?那比如说呢,现在我还说咱回到那个 mvc 那个地方啊, 第一步我也 spring vc 的坐标也入呢。第二步呢,你把这个 copy 粉,大家还说前提你是什么呀?前提你是 spring 自己的组建啊,他 还有规律改着啊,其他的,然后你说也就第三方的一个一个秘密空间,他不是这样的地址啊,对吧?你改你也不知道什么,你就得去抄,对不对?好在这比如说我把它改成 mvc 啊,这个地方也是 m v c, 好命名空间也是,之后呢,没完把它 copy 分,你要记住它是一对的啊,它是一对 copy 好,改它改成 m v c, 它改成 m v c。 有可以忽视的地方,就这个地儿啊,这个地儿也改 m v c。 刚才是改 m v c 是变灰的吧,哎,这就没有问题的,那没有问题之后呢?你在这尖角号 mvc, 你发现是不是有提示呢?那证明眼睛就没有问题的,是吧?你该随便用 mvc 的,然后 这个这个,这个对应的这个标签就开始引入了啊,不管是 contex 还是 m v c, 这其实都是死命自己的组件的,对吧?自己的组件,比如在演个第三方的吧,比如说搞一个,我这个 ppt 上写的是 double 是吧?那行,我们演个 double 的啊, double。 首先说你这个命名空间是什么咱就不知道了, 是吧?哎,名目空间是啥咱就不知道了,咱就需要一会百度啊,去抄一下啊, google 去抄一下。首先还按照步骤,第一步要干嘛?第一步要引坐标对不对?在这我引一个 w 坐标, 因为 double, 现在这个 reposer 仓库有啊,所以我就直接写呢, ok, 二点儿全是五的是吧?好,引完之后第二步呢?要引证,这你就别 copy 了,你说这个 copy 一份吧,我 copy 一份 double 吗?改成 double。 你这这这不行啊,这不,这不扯淡吗?这不 对吧,你这这这,不死不认死不认的吗?所以这个地址是啥?密密空间是啥咱就不知道了,不知道怎么办?抄嘛,百度嘛,对不对?哎,比如叫 d u b b o, double, double 什么呢?快速入门, 哎,这个应该有快速入门啊。嗯,找一个吧。哎,往下走,快速入门应该有啊,是什么?你这 w 是不是没学过?你根本就不用管,你知道我用了,用了他的标签,他是第三方的,我需要引,是吧? 没有配置吗?哎,这呢,哎,这有段配置是吧?哎,这,你看这,哎,这是密密空间吧,哎, copy 行吧,哎,扔到这密密空间有呢,是吧?然后对应是不是得 skimmer 是吧?找 skimmer 在哪 哪呢?你再找。对啊, skimmer location 是吧?下边这是 beans 的啊,这儿呢吧? double 的,这是密密空间,这是 double 的,然后 skimmer 的,然后那个位置行一对儿啊,这是一对 copy 扔这儿是吧? 哎,为好看,我再回车一下规整一下是吧?哎,这是 memo 空间,这是对应 skimmer 的那个映射啊,就文件映射地址是吧。选中了呢?好,你再往下走,我要用到这个 double memo 空间的标签哎, d u b b u 看有没有哎,是不是就有呢,明白不?哎,这就可以了。 行吧,这是引入第三方命名空间啊,使用内部的标签,这个过程先引坐标啊,引入人家炸包,然后再去干什么?去找或抄,就抄对应的这个 这个命名空间跟这个 skimmer 一个位置,然后再去根据什么呀?根据他这个前缀去使用他的标签 cam 这标签啊, okay。 行吧。到这呢,我们这个 spring 配置它的这个自定义的这个标签跟它的,然后默认标签这块我们就都刷了啊。

好,那我们继续啊。下面我们看一下在嗯并的基本配这个地方。最后一个知识点关于 sbring 的其他配置标签。那首先呢,我们要分清 sbring 的标签呢,它其实分为两大种, 第一种呢,我们把称为默认标签。第二种呢,我们把称为自定义标签是吧?那什么叫默认标签呢?就是不用额外导入其他命名空间的标签,我们把它叫做默认标签啊,一般其实就是我们的并标签啊,以并标签为代表的,然后那些标签就前面不用加前缀去引用。那还有一种呢,是自定义标签, 最近标签呢,就需要引入其他命名空间的啊,其他命名空间的约束。然后呢,在引用了这个命名空间内部的这个标签时呢,我需要通过前缀去引用啊,就这种形式。下面呢,我们具体去看一下我们这个配置文件啊。首先呢,我们看上面这个就是我们引入的约束头 对不对?哎,这一个你会发现是不是叫叉描 ns 是吧,叉描不用说。然后 ns 其实就是 name space 啊,一个简写啊,带这个东西是吧,这个叫 name name space 呢,对应的一个,你看这个叫地址呢啊,一个名字, 然后他没有冒号什么什么东西是吧,啊,所以这些就是默认的命名空间啊,我们先知道,然后这个在引入,因为之前我们应该学过 rose gamer 的引入是吧,所以在这我不过多去细讲啊。简单说一下,就是说这是命名空间。 然后呢,你还要引入这个 skimmer ocation 代表这个 skimmer 到底在哪啊,就具体那个文件在哪是吧,那具体文件在哪?对应引入的时候呢?他那个然后书写的规范是先写命空间,然后后边有空格,然后再写对应的那个 skimmer 地址啊,叉 s d 的那个地址。那那个地址呢?一般情况下, 现在都是一个虚拟地址。就是你看貌似看是个网址对吧。他其实对应的是映射到我本地的啊。某些炸包当中的那个 steam 文件到底在哪啊。大概就是这规范吧。这个然后不用过多去说。那如果现在他内部就是这个密码空间内部维护的这个标签啊,我们都把它称为 默认标签,你可以看一下,其实就是跟币相关的对吧。那如果也有其他标签呢?比如说啊,比如说我在这呃,把它上面 copy 一份。哎,不是这么 copy 呢,是这么 copy 啊。 copy 我放下边吧,放到这啊,走是吧。然后呢,也报错呢,因为重复的嘛。加个冒号,后边加什么?加一后缀啊,后缀。但这个后缀是一会我在使用标签时,那个标签是前缀。然后比如叫 context 行吧。那最后后边也得改 context 是不是你这么拍没用,你下边这个地方也得跟着拍啊。再 copy 一套。 哎,扔这扔这之后呢,我们也需要改,把对应的这个 beat 都改成 context。 下面一样,这个 beat 改成 context。 当然这规范的是去找那个地址啊。但找地址多麻烦啊。我现在直接把它然后弄过去,按照这个规则改成我们需要的那个, 这命名空间那个桥坠是不就 ok 了吧。那选中呢?你要想引入这个 contex 内部的这个标签,就用它的标签。我们要干嘛呢?我们 需要使用你给定这个前缀,比如说在这,在这边哎,我写个叫 context, 你会发现是不是有提示的吧,是吧? context 冒号。比如说 combining skin 啊, property, 然后 procuss holder 是吧?这个代表就是。比如说用这个 是吧,这代表就是引入哪个空间哎,这个空间内部的标签,明白吧?所以这个前缀的作用就在于我得区分到底是哪个命名空间呢啊。当然你这个地方原则上你要写个 a b c 呢,你这个地方是不是写 a b c 是吧?原则上是不是这么写,但是肯定不会这么干嘛,对吧?我们不会这么干啊。一般人家,人家这个前缀都是约定俗成的啊,叫什么都是固定的,所以你就按照标准去叫就完事了。所以说他内部然后维护的那些标签,我们都把 叫什么都把它叫做,然后自定义标签啊,自定义标签与这个然后默认的情况下,这个 bs 引入这个标签内部的,然后维护的标签呢,我们就把它叫做默认标签啊。这是关于默认标签自定义标签这概念应该没问题吧。那我们再看下默认标签呢。嗯,其实啊,我们就这四种 啊,就是四种,第一个叫 bins 啊,第二个叫 bin, 第三个叫 import, 第四个叫 ears 啊。首先看第一个 bins, 它的作用是一般作为插苗配置的根标签是吧?你比如说在这个地方,我们根标签是比较 beats 吧啊,其实这个 beats 内部还能再套 beats 是吧?它代表什么?代表你可以认为是叫整套环境的。 比如我这有有一套 beats 是吧?那下面呢,可能还一套 beats, 还套 beats, 这个相当是两套配置,当你这些指标签都需要存在,哪就需要存在某一套 beats。 下面 这就没了吧,我给指定到底是用这套 beat 的配置啊,还是用这套 beat 的配置啊,对吧?当然这个 beat 这个我命的比较少呢。啊,我先把它去掉吧。 好,这是关于我们的 bis 标签是吧?还有就是我们的并标签,并标签,大家看到我们是不是刚才之前的配置都在学并标签对吧?并标签会占到我们配置的百分之 啊,可能九十九以上是吧。 ok, 这个就不过去阐述呢,因为它的这个并标签这些细节我们已经都讲过呢啊,一些配置的一些属性我们基本都说过呢。那再往下走就是 input 标签啊。 input 标签它主要是用于导 导入外部资源的啊,导入外部资源啊,什么意思啊?因为你的配置文件可能有多个,但你最终的主配置文件可能有一个。我在主配置文件当中肯定要导入其他一些,然后小的其他配置文件,我会用一个 pro 导入到主配置文件当中。 那最终呢?我在这个 speed 容器在加载文件的时候,我只加载配置主配置文件就 ok 啊。这 import 的最后一个呢,就是我们的。嗯, get s 啊。这是干什么的?定义编名的 啊。电影编码。其实我们在配单个并的时候,这个并我们当时是不是学过,可以通过内秒指定编码吧,哎,你也可以通过这个呃 ears 额外的,然后去指定编码, 明白吧,哎,你看到底是谁,然后边边到底是什么,一会我再给大家演示啊。行吧,这是关于我们这个死不定的一些这个这个默认的标签啊,大概就这些死不定。然后底层呢,在解析的时候,他会区分你到底是 啊默认命名空间的啊,还是要自定命名空间的。那如果是默认命名空间的好,他再去区分你到底是 b, s 是 b, 是 input, 是 nas, 再区分这四个,然后标签是哪个不同的标签呢?对应有不同的解析方案啊,这个大家应该知道是吧?那如果你是这个 呃自定的命命名空间呢?就是你是引入的,是外部的,这些不是这个默认的。那 ok, 那就他是又有一套其他的机制啊,去解析我们这个自定命名空间的标签。当这个机制我们后期会给大家讲。 ok?

在 supreme 项目中如何开启?得录一数据员监控页面。好,接下来我们一起看对应的实现流程。 supreme boot 和我们的数据库连接词得录一配置监控页面, 然后配置监控页面的话,一共有两种方式,第一种方式是属于自定义的版本,然后另外一种方式是使用我们 spent boot 里面的 start。 好,我们今天先看自定义版本的整合的一个流程。 第一步我们要在 home 点叉 meal 中啊,去添加我们德鲁一数据库连接词的一个依赖。好,我们看一下。好,这个就是我们数据库连接词的一个依赖,然后 对应的版本我是配置到我们的副工程里面的啊,我们看一下副工程登录一啊,使用的是这个版本一点二点二零,然后这个是目前最新的一个版本啊。好,这是我们的第一步, 然后第二步的话我们要去编写一个我们的数据员,他对应的一个配置类。好, 然后配置类的话第一个要去做的事情就是和我们的 datashores 啊去做一个绑定。 然后第二步的话,我们要去开启我们的 c 口的一个监控,然后另外一个就是 c 口防火墙的一个功能。好,这是我们的第二步啊, 然后第二步中的第三第三小步就是要去开启我们德鲁一监控的功能。 好,然后这里的话我们可以去设置对应的一个账号还有密码啊,然后这里的话就是我们的访问的一个路径,这个地方可以自己去自定义。 然后第四步的话就是我们要去开启我们 web 应用的一个菜单的功能,也就是我们的这个管理后台需要有哪些菜单?好,这些都是在我们的 datasource configure 啊这个类里面去做一个实现。 好,我们看一下对应的代码,需要相关资料和代码的小伙伴可以在评论区扣一,然后私信过去。好,这里可以看到啊,这个就是 拦截的,就是拦截所有的一个请求,对吧?拦截所有的一个请求。好, 然后这里对应的就是开启我们 web 应用菜单的一个功能,然后上面的这个方法就是去设置我们的 管理后台的一个用户名还有密码,然后这个是访问的一个映射的一个路径。啊,好, ok, 然后再往上走,这里的话就是去开启我们 c 口防火墙,还有对应的日志相关的一些监控。嗯, 然后这上面的这个注解是什么呢?就是和我们的数据员去做一个绑定。好, ok, 那这个就是我们 datasos configure 这里面要做的事情。好,接下来因为我们要去连 接我们的数据库,对吧?所以我们需要有一个 application 这样一个属性文件,我们找一下属性文件, 好大致的看一下啊,这里面实际上就是防火墙还有日志,然后这些对应的就是 ip 用户名还有密码啊,驱动。好, ok, 然后接下来的话什么呢?我们要去编写一个 control 进行一个测试,因为你要去产生对应的 c 口,对吧?那我们的管理后台才会产生对应的监控的一个日志, 那最后就是去访问我们德鲁伊的一个监控的一个页面。 ok, 那我们接下来去看一下啊。好,这个的话就是他对应的一 一个监控页面,然后这里的话就是我们的首页啊,一开始进来的时候这个地方是没有任何数据的,你必须要去产生对应的 c 口。好,我这里去访问一下,然后我们在这里查询。 好, ok, 那这个就是我们今天 supreme boot 和我们的得录仪啊,整合对应的一个数据员的一个监控页面。

好吧,那介绍完基于扎苗死不人应用啊这些东西之后呢,那我们就一个一个去学习,首先呢,我们先学习死不人并的一些基本的配置啊,也是一些比较基础的东西,那我们来看一下, 首先呢, spring 在开发当中啊,主要就是对我们的并进行配置啊,主要就是刚才我们在我们的这个, 呃,配置文件当中对于那个并标签的配置是吧?那这个主要配置有如下这么多,我们稍微过一遍啊,每个都会详解。第一个呢,然后主要是配这个就是并的权限的名啊,这个我们已经配过了,然后给他指定一个 id 名称,这个 id 的名称是在配置文件当中这个并的一个唯一标识。 那这个 id 呢?后期会转换成并,在容器当中一个并内幕啊,并内幕,这能能跟上吗?并的名称明白吧?就这个地方配的是 id, 但最终他到容器当中会转化成一个并的内幕,而我们盖的并时,其实通过什么获取的,哎,我们在之前用到的盖的并那个块的那个参数,其实不是 id 啊,他其实是并内, 明白吧?哎,是并的名称,只不过配的 id 后期会转成容器当中的并内啊,这个大家知道,下面呢就是配这个, 第二个呢,就是配病的别名,哎,你发现这个有内幕是吧?就是拍电台配内幕吗?就是说一个病可有多个名称 啊,就像你一样把你叫张三是吧?你是不是小名是不?狗子猫子是吧?这都叫小名是吧?这个内幕主要是配什么?主要是配这个并的小名的,也就是别名的啊,配别名的。 呃,所以说我们在盖的壁纸呢,我们其实不仅可以根据这个 id 啊,这个 id 是获取的,那后期然后配这个内 内幕呢?他这个也可以获取照,就是我可以根据 b 内幕获取照,也根据别名获取照啊,我们就是一起演示啊,下边是 scope, scope 什么叫范围啊?就并一个作用范围。那什么叫并的作用范围呢?其实在这我们讲的直白一点就是并呢,在末日情况下,它其实就存在于一个,就是当地的 就死兵容器啊,帮我产生一个并对象,比如说我们的 siris 对象是吧?这 siri 对象有几个?就一个啊,就一个放到那个麦访,放到容器当中是吧?你在获取的时候就把一个给你是吧?但是有的时候呢,你可以然后修改次告访啊,让这个死兵容器帮你。在产生这个病的时候可以产生多个, 那多个他就没法去存在这个容器当中的,是吧?就是你每次在盖地被时,他都会创一个新的,然后返回给你,因为你说多。有的时候为什么多个就不能存容器呢?因为多个你到底有多少个呀?多个多少个?三个是比较多, 五个叫多个,一百个是比较多个。那死不认也不知道到底要几个啊?不可能一开始咱也搞一百个存容器存着吧。那也不行啊,那性能有问题啊,对吧?一会我们再讲 sgo 吧,就是他一个作用范围啊,再往下走, vc 以内。这什么呀? vc 你想 什么?延迟加载啊?延迟加载,我们刚才已经给大家对比过呢,我们的四部容器就是 omgpa 成 comtax, 他末的情况下配置文件一加载对吧?容器一创建,我这个币是不是就都啪啪啪都给你创建好是不是放到一个位置是吧,等待你去该你去获取对不对? 哎。缓存提前给你缓存好,但如果某些病啊你在配置时你配置能给自己内在哪一处?那衣服是干什么?我不需要你马上帮我去加载配置文件的时候就把这个病给我创建好。那什么时候帮我创建呢?就跟那个病犯 水冰工厂一样,我什么时候盖的被式你什么时候再帮我创建啊。延迟加载好再往下走 intimates 的这个地方。 intimates 的初始化方法 啊。出水化方法就是当你这个病在创建完毕之后啊。哎,可能你可以要执行一些出水化的操作,我就可以在这个地方通过配置的方式指定这个病内部哪个方法可以作为出水化方法。那这样的话当病疗创建完毕之后他就会帮你就死不认啊,会自动帮你去调用出水化方法。 有人说我们不是有那个构造方法吗?构造方法是构造对象用的触手法方法是等对象创建完毕之后再帮你调用的触手法方法。他是有个时间差的啊。再往下走第四代没事的,销毁方法 就这个病在挂值前。哎,我是不是可以然后执行某些方法是吧,这个用处不是特别大啊。再往下子 啊。熬出来。这什么意思?熬出来代表然后自动注入啊。自动注入,哎又是注入呢是吧。我们之前注入是配置吧 啊。我们应该注入是可以配置通过盘把铁丝吧,通过赛的方法,在我们的代码当中赛的方法,哎,可以注入,那如果,然后你不配置情况下,我能不能从容器当中自动去来找到哎,你想要的这个东西帮你扔进去的。 哎,也可以啊,我们可以设置自动啊注入的方式,奥特贝尔啊,可以 by type 啊,也可以 by name, 就是通过类型,如果你配置完毕之后呢,那这个并,然后内部,比如说,哎,他这个有这个对应的 set 方法是吧? 啊,他会自动的,然后从容器当中找类型匹配的或名字匹配的这个并自动给你扔进去,你就不用每次在学然后 purpletes 啊,人为去写 purpletts 进行 输入呢啊, ok, 那再往后走呢? be factory 啊,呃,跟这个不是 factoryback factory messer 的,这个涉及的是并的,然后这个创建方式,这个我们一会再给大家讲这个地方,然后一句话半句话我们说不明白啊。 行吧,这是关于我们这个并标签,其实涉及的主要的配置在这基本哦,都在说全的啊,当然还有一些可能不是特别经常用的基本,然后你一辈子见不着一次的啊,在这我就没有涉及啊,就非常少呢,这个地方已经非常全的啊。

好,那下面继续啊,那下边我就把这几个默的标签啊,挨个给大家演示一下啊。首先我们看第一个 beats 标签啊,还说 beats 标签呢,它其实, 嗯刨出做根标签之外啊,他开还可以,然后做区分环境的用处啊,就是通过他对应的一个属性叫 profile 啊,主要我们其实这个 beats 用的时候就用这个 profile 属性,可以让他去区分封装不同的环境啊,那下面呢,我们给大家演示一下啊。 啊,当然这些呢,我把这些没用的先把它干掉啊,别影响我的测试。嗯,这个先不用吧。好,那比如在这啊,在这我定一个 this 对吧?这个 beat 呢?通过 profile 然后去指定一个名字,就这个环境的名称啊,比如我就 叫第一位开发环境,行吧,开发环境,然后内部呢去配个并 是吧?配个并,那这个并呢?然后当然。嗯,你可以给个 id 吧,这个 id 我叫 user service。 哎,你不能重名 s e r v s e 啊,不能跟下边重名是吧?叫 user service 一 对吧。下边 user service 嘛,然后对应它的这个权限的名 com 点 it 黑马,点 service, 点 i m p l 点 user service 安票, 可以吧?哎,这就行了是吧?那然后呢,我再去配置一个开发环境啊。测试环境,这是开发环境是吧?测试环境 test, 比如这个地方我们配个 user 丢吧丢一对吧,它对应的就是我们的丢层,丢层下边的这按 p r 点它 可以吧。哎,这是报错呢是吧?为什么报错呢?放这说什么说 surveys ambit, bins one of 啊。 bins is expected 是吧,意味着我是不是就需要一个 bins 是吧,你这要多个是不行的哎,稍等哦。把它呢 剪切一下放这,你还报错吗?是,是不是不报错了?哎,不报错了,他有个稍微有个顺序问题是吧?好,那现在,然后你写完之后呢,才发现你这地方现在应该是 more 有三个环境是吧?第一个环境就是我们的 末日环境,就这个地方是吧?第二个呢,就是我们这个 d v 环境第三个就是 test 环境是吧?呃,这些 beat 是不没有在任何环境下是吧?啊,没有在任何环境下啊。好,现在我去测试。我怎么去测呢?首先你要指定环境, 你看我现在有 service 有 d u 对不对?你回到这个地方我这么干啊,我再 copy 一个叫 user d u d u user d o。 行吧,我现在是没有指定任何环境嘛。没有指定任何环境他就找的谁啊?找的就是就是末日环境,明白吧?诶,末日环境,然后你直行走 是不是都能打印?哎,我现在我想去找谁呢?我现在想去找 user service 一跟 user deal 一。 user service 在哪呢? user service 是不是在第一位环境下的吧,而 user deal 一呢,是不是在太子环境下吧?哎,我看能不能找到呢?哎,我们在这儿去执行。 哎,报错呢?报什么错呢?是不是 usb 找不到吧?哎,找不到。那你想找这个环境怎么办呢?你得为他去先指定环境。 那怎么去指定环境呢?好,我们 ppt 我们写呢,就是通过两种方式,第一种方式我们使用虚拟机参数的方式,就在运行期间啊,我给加个然后杠 dspring perfill 四点 active test 就指应个 test 环境或指定 tv 环境。第二种方式就是你设置它的环境面料就通过,然后代码形式,所以 set properties, 我们写第二种吧,第二种稍微简单一点啊。好,你在这个地方,在这儿指定环境啊,就是 system 点 set property。 哎,这个名字还挺长,叫 spring, 点儿 feel 四啊,点 active active 是不是叫激活的?激活的意思是吧?比如现在我去激活哪个环境呢?我去激活啊, dv 环境, 对吧?大家知道 d v 环境有谁? d v 环境是不是有 usb 是吧?但是没有 d o 嘛,对吧?好,现在我把这个 d o 先注脚 助教,然后执行,你看现在能不能获取到是,是不是能获取到吧。没有报错,然后你把它打开呢? 打开是不是得报错呢?报什么呀?是不是报找不到 user service, user d o e 吧,你看说没有一个 user d o 的东, d o e 的东西 是吧?那如果你把它改成 test 呢? t s t test, 哎, t e s t 直行, 它是不 service 就找不到了嘛。但 d o 能不能找? d o 是能找到的啊,当然因为这个地方先报错呢,是吧?获取不到我就把它注掉。那你现在看 test 这个环境下是不是有 d o user d o e 吧。那现在我找 user d o e 是不肯定能找到 看到了吗?啊?所以说你在开发室,有的时候啊,有的时候你可能需要去 区分你的开发环境还是测试环境,那这个时候呢,你就可以把开发环境用到的病配到这啊。在测试环境用到病配到这, 是不是然后呢?你虽然配的然后比较多,你可以在运行期间,是吧?在运行的时候要指定环境面料或者代码当中去写。你到底用哪套环境 啊?这个呢?后期你在学 smart 部的时候,可能后期项目当中还需要去切换环境,那所以这个然后你稍微哎知道一下啊?那么这是关于我们这个 beas, 然后最主要的一个 profile, 一个属性的应用。


我们来看 supreme 中 unable catching 这个注解,如何集成我们的 radis。 好,我们先看一下对应的流程啊, 第一步我们要引入连接我们 redis 的架包,也就是这里面就包含了对 redis 的一些操作啊,这是第一步。然后第二步就是要去创建我们 redis 的一个配置文件啊, 比如说要连接 redis 里面的哪一个库,然后还有对应的一些属性啊,等会会去做详细的介绍。然后第三个的话就是要去创建我们 redis 相关的病啊,主要是通过啊注解的这种形式 去创建我们开启 manager, 就是对我们的这个缓存进行管理的一个类啊,然后 最后一步是什么呢?就是创建我们的服务类,然后这个服务类就是把我们数据库中的数据存储到缓存中啊,然后使用到的注解就是这个开启 abo 这个注解啊,然后最后就对我们的代码进行一个测试。 好,那我们先看第一步啊,就是引入我们 redis 的客户端的一个价包。好,在这里。 好,这个啊,我们用的是这一个 radish, 这个家包好,把它引入进来之后,我们就可以对我们的 radis 进行一个操作。 好哈,这里有一个版本号,版本号我是维护到我们的副工程里面的啊,对的,是这个三点一,九点三啊,好, 然后第二步要做什么?第二步就是去配置我们 red 式的配置文件,对吧?这里有两个啊,两个配置文件。好,我们看一下 resource obligation 雅妙,这里就是去配置对应的 ip, 还有我们的端口,对吧?然后这个是对应的是 redison, 它对应的一些啊属性配置啊,就全部配置到这个配置文件里面啊,我们看一下, 看,这里面有对应的啊,数据库,对吧?你使用哪一个数据库?还有其他的一些连接参数啊?比如说我们的连接超时,还有连接时的一些大小,对吧? 好,我们 redis 里面它默认的数据库一共有十六个啊,就是从零到十五。好,那我们配置文件配置好之后,我们再看下一步,下一步就是去创建这一个开启 mini 角,对不对?好, 开启 manager configure, release configure 啊,然后这里要加上我们的注解 component, 然后还要加上一个开启我们缓存的一个注解啊,然后这里注入我们操作 ladies 的一个客户端啊。好,然后最后就是创建我们的 catch manager, 看到没有啊?就通过这个客户端去创建我们的 catch manager, 然后再往这个 catch manager 里面啊去设置一个缓存的名称,也就是我们懂火的数据就是存放到这个缓存里面的啊。 好,那接下来呢,是不是要去创建一个服务类,然后这个服务类就是把我们数据库中的数据啊,查询出来的数据,把它放放到我们的这个缓存中, 对应的这个注解就是这个开启 a 吧。好,我们看我们的服务类 这里啊,通过这个 catch app 这个注解,然后这里面对应的就是我们 catch manager 的名称,对不对啊?就是我们在创建 catch manager 的时候指定的这个名称,然后这里面对应的就是我们的 key 啊 t, 然后 t 我的组成是什么呢?当前类名加上当前的这个方法名啊, 然后我这里是模拟了从数据库查询出来的数据啊,然后存放了三张票啊,然后查询出来之后,这个方法里面的数据他就会放到这里面来啊,放到我们的开心慢六角。好,那最后一步是什么?最后一步我们就写一个测试代码啊。好, 我们看一下我们的测试代码。 好,在这里啊,就是直接去调用啊,调用他。好,我们先看一下缓存里面啊,缓存里面看现在是没有数据的,对不对? 那么直接 run 执行之后,我们再到缓存里面去查对应的数据啊, 好,我们可以看到啊,这个地方应该是已经执行成功了,对不对?那我们就直接到缓存里面去查取啊,对应的数据我们是根据什么来查呢?根据这个 i depend catch。 好,检索一下看到没有,对吧?这个就是我们刚存的数据啊, 看这里门票,儿童票、节假日票,还有我们的成人票,对不对?然后这个 k 对应的是什么呢? k 对应的就是当前这个类名,加上我们的方法名, 对吧?然后这一个 itben catch, 这个就是我们的 catch manager, 对不对?缓存的名称。好,那这个就是用我们的 supreme 的注解啊,集成 redis。

spring by 这项目的亮点和难点像难点一,性能调优对于处理大规模数据的 spring 半生优,性能调优是一项挑战,需要根据具体的业务场景和数据特点调整各种参数,如 chankset manager, my my name is mendell, 已获得最佳的性表现。二、错误处理在处理复杂的批量任务时,可能会遇到各种预期之外的错误和异常。如何优雅的处理这些错误并保证作业的稳定性和数据的一致性 是一个需要仔细考虑的问题。三,资源管理在并发执行多个批量任务时,如何合理的管理资源,避免资源征用和性能瓶颈 是一个需要解决的问题。四,数据一致性在分布式环境中,如何保证数据的一致性,尤其是在涉及多个数据员和多个处理步骤时, 是一个需要特别关注的问题。五、可维护性随着业务的发展和系统的扩展,如何保持 spring 外衬用的可维护性, 避免代码变得臃肿,很难以管理,是一个长期需要关注的问题。六、与现代技术的集成 但与一些现代技术如云云生服务,微服务架构的集成可能需要额外的工作,这可能会增加开发难度和维护成本。七、学习虚线 spring best 的功能丰富, 但同时也带来了较高的学习曲线。新上手的开发者可能需要花费较多的时间来熟悉 gapi 和概念,这可能会影响项目的开发进度。