专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

浅谈一下SpringBootStarter的实现

  使用Springcloud的时候,需要使用某些功能的时候,通过引用starter然后做些简单的配置就可以直接使用对应的功能,卧槽,爽,哎,那自己想自己撸一个要怎么实现呢?
  官方文档有这么一段
  pringBoot检查已发布的jar中是否存在METAINFspring。factories文件。该文件应在EnableAutoConfiguration键下列出您的配置类
  EnableAutoConfiguration键具体点应该是org。springframework。boot。autoconfigure。EnableAutoConfigurationorg。springframework。boot。autoconfigure。EnableAutoConfigurationcom。mycorp。libx。autoconfigure。LibXAutoConfiguration,com。mycorp。libx。autoconfigure。LibXWebAutoConfiguration
  定义一个starter包含下面几个步骤:
  1、创建自动装配类,Springboot自动根据spring。factories扫描,可以理解为starter的入口类,多个类会spring。factories配置会按配置的顺序执行。
  2、定义配置的承载属性类,用于承载配置文件的配置项
  3、定义功能的实现类,在自动装配类里注入
  先创建个Maven的项目
  springbootconfigurationprocessor并不是必须的,这个在生成jar包之后,会产生一个springconfigurationmetadata。json元数据描述文件,在引用的时候,配置application。properties或者application。yaml的时候可以自动提示配置项。groupIdcom。springredis。startergroupId!starter的名称springbootstarterspringredisartifactIdversion1。0。1version!打包成jarpackagingjarpackagingparentspringbootstarterparentartifactIdgroupIdorg。springframework。bootgroupIdversion2。7。0versionparentdependenciesdependencygroupIdorg。springframework。bootgroupIdspringbootstarterartifactIddependencydependencygroupIdorg。springframework。bootgroupIdspringbootconfigurationprocessorartifactIdoptionaltrueoptionaldependencydependencies
  定义自动装配的类packagecom。springredis;importorg。springframework。beans。factory。annotation。Autowired;importorg。springframework。boot。autoconfigure。condition。ConditionalOnProperty;importorg。springframework。boot。context。properties。EnableConfigurationProperties;importorg。springframework。context。annotation。Bean;importorg。springframework。context。annotation。Configuration;ConfigurationEnableConfigurationProperties(SpringRedisProperty。class)ConditionalOnProperty(prefixspringredis,valueenabled,matchIfMissingtrue)publicclassSpringRedisAutoConfiguration{把SpringRedisProperty注入进来,传递给SpringRedisService使用AutowiredSpringRedisPropertyspringRedisProperty;把SpringRedisService自动装配到容器BeanpublicSpringRedisServicespringRedisService(){returnnewSpringRedisService(springRedisProperty);}}
  定义配置承载类,读取redis的账号密码服务器ip端口和db的下表packagecom。springredis;importorg。springframework。boot。context。properties。ConfigurationProperties;以springredis为前缀,配置的时候用springredis。xxxx为keyConfigurationProperties(prefixspringredis)publicclassSpringRedisProperty{privateStringhost;privateIntegerport;privateIntegerdbIndex;privateStringuserName;privateStringpassword;publicStringgetHost(){returnhost;}publicvoidsetHost(Stringhost){this。hosthost;}publicIntegergetPort(){returnport;}publicvoidsetPort(Integerport){this。portport;}publicIntegergetDbIndex(){returndbIndex;}publicvoidsetDbIndex(IntegerdbIndex){this。dbIndexdbIndex;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this。userNameuserName;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this。passwordpassword;}}
  定义功能实现类,根据配置(SpringRedisProperty类承载了读取配置文件的值),拼接一个redis的字符串,打印一下日志。packagecom。springredis;importorg。slf4j。Logger;importorg。slf4j。LoggerFactory;publicclassSpringRedisService{privateSpringRedisPropertyspringRedisProperty;privateLoggerloggerLoggerFactory。getLogger(SpringRedisService。class);publicSpringRedisService(SpringRedisPropertyspringRedisProperty){this。springRedisPropertyspringRedisProperty;getRedisConnectionString();}publicStringgetRedisConnectionString(){StringconnectionStringthis。springRedisProperty。getUserName():this。springRedisProperty。getPassword():this。springRedisProperty。getHost()this。springRedisProperty。getPort()this。springRedisProperty。getDbIndex();logger。info(connectionString);returnconnectionString;}}
  在resource创建一个METAINF创建一个spring。factories文件org。springframework。boot。autoconfigure。EnableAutoConfigurationcom。springredis。SpringRedisAutoConfiguration
  最后生成jar,测试环境就可以开始了。
  创建个springbootwebdependenciesdependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebartifactIddependencydependencygroupIdcom。springredisgroupIdscopesystemscopespringbootstarterspringredisartifactIdversion1。0。1versionsystemPath{project。basedir}libspringbootstarterspringredis1。0。1。jarsystemPathdependencydependencies
  把生成的starter的jar拷贝到lib目录下(这个文件夹随便定义,在pom对应写上正确的引用路径即可)。
  添加starter的配置信息
  application。yamlspringredis:host:127。0。0。1port:6379username:amingpassword:123456dbindex:0
  其他的业务代码都不写,启动测试一下。
  定义个Controller调用一下Service的接口packagecom。starter。startertest;importcom。springredis。SpringRedisService;importorg。springframework。beans。factory。annotation。Autowired;importorg。springframework。web。bind。annotation。GetMapping;importorg。springframework。web。bind。annotation。RestController;RestControllerpublicclassStarterController{AutowiredSpringRedisServiceservice;GetMapping(test)publicStringGetRedisConnectionString(){returnservice。getRedisConnectionString();}}
  nice!!!

大头贴为什么在韩国又流行起来了到底是什么吸引人再去用这个充满时代感的东西?和好朋友一起去拍大头贴,大概是许多人的青春回忆。图片来源YouTubeGIRLSTRENDbyFURYU提到大头贴,如果你的印象还停留在我们是光荣的雷锋传人陆军第79集团军某旅雷锋班传承雷锋精神纪实第79集团军某旅雷锋班班长牟振华将雷锋枪交接给新入班战士蒋佳恒。张永进摄雷锋。到!到!到!2月16日,第79集团军某旅雷锋班晚点名,响亮的声音回荡夜空。这是雷锋班每晚雷打不动的仪式为什么要严防割青毁粮?其危害超出了很多人的想象春耕进行时先来看一下今年的中央一号文件,其中就明确指出了继续提高小麦最低收购价,合理确定稻谷最低收购价。逐步扩大稻谷小麦玉米完全成本保险和种植收入保险实施范围。鼓励发展粮食订单生产对北溪事件进行客观公正调查十分必要应俄罗斯要求,联合国安理会近日就北溪天然气管线爆炸事件举行公开辩论,安理会成员阐述了各自立场。中方明确表示,对此事开展客观公正专业的调查,与每个国家的利益和关切都息息相关,支持加快中海信托拟4亿转让国联期货,两大买家有望接手!券商系期货公司掀起增资潮一个多月前就将国联期货39股权挂牌转让的中海信托,仍然没有找到下家。券商中国记者从上海产权交易所获悉,该笔股权转让底价为4。11亿元,较评估价溢价约1。7,首个披露期自2022年1俄乌战争1周年,俄军闪击变闪腰?网友闪击只有中国和美国会玩2022年2月,号称世界第二军事强国的俄罗斯,武装直升机开路,重装甲伞兵突击,对乌克兰发动闪击,结果最终也不得转进白俄罗斯,不仅没有速战速决,而至今仍然遥遥无期,如今双方的仍在乌东给每个美国人的一记耳光拜登被批利用基辅之行转移视线据今日俄罗斯电视台网站2月21日报道,美国共和党众议员保罗戈萨尔20日说,美国总统乔拜登的乌克兰之行是对每个美国人的一记耳光。拜登已经因为他交给基辅的上千亿美元资金而受到抨击,现在人生海海有多伟大,董卿推掉工作,高晓松从美国连夜飞回!生活不是你活过的样子,而是你记住的样子。麦家是的,人生是无常的,潮起潮落,但我们应该用阳光去拥抱不完美,让生活充满希望,勇敢的去生活,面对美好的生活,可以承受,也可以放下!人生海海俄乌冲突升级一周年乌克兰危机重创欧洲经济来源新华网乌克兰危机升级一年来,欧洲经济遭受多重冲击,能源产业民生环保等领域频亮红灯。分析人士认为,欧洲盲目追随美国对俄罗斯实施经济制裁,不仅安全利益被裹挟,经济领域也遭到反噬。更摩根士丹利警告美国股市处于死亡地带标普500或下跌26来源海外网美国股市2022年曾遭受重创,图为美国证券交易所据美国福克斯商业新闻电视台网站21日消息,摩根士丹利首席策略师迈克尔威尔逊(MichaelWilson)日前在一份分析报告一款俄罗斯游戏为何近期如此爆火!!!最近一款名为原子之心的俄罗斯游戏火了,以下是我国网友的一些评论,从这些评论中不难看出我国网友对这款游戏的喜爱。这是官方给出的游戏好评率,从中也可以看出游戏在世界范围上的火爆程度。那
慈禧的干女儿周莹,清末陕西女首富,历史上此人结局怎样?慈禧太后应该算是中国近代史上非常重要的人物之一了,她这一生虽嚣张跋扈,子嗣却很少,除了养子养女以外,就只有咸丰帝一个儿子。不过,亲生的不够,认养的来凑,比如清末陕西的女首富周莹,就中华民族简史(康雍乾盛世)1616年,努尔哈赤统一女真各部,称汗,国号为大金,史称后金,年号天命,定都于赫图阿拉。1618年,努尔哈赤以七大恨告天伐明,袭取抚顺,在明边墙附近大败明兵。1619年,皇太极参加八路军新四军有军衔吗?编者按85年前,为抵抗日本侵略者,中国工农红军改编为国民革命军第八路军和新编第四军,奔赴抗战前线。为纪念八路军和新四军成立85周年,中国军网微信将陆续推出系列文章,带你了解八路军新清末老照片,新娘在公婆面前脸色麻木,留守太监提着蒲扇一身赘肉一个王朝的腐朽和无能,不单单要从军留事政治经济这些大的方向去研讨,更要从社会民生百姓生活这些微不足道的方向去深思。在众多封建王朝中,清朝的腐朽和无能无疑是最令人印象深刻的,清朝之前落后就要挨打吗?落后就要挨打。这看似天经地义的一句话真的合理吗?不想和平了吗?谁弱谁就活该挨欺负吗?在于我看来,对于落后的国家我们最应该做的就是援助。原因很简单有时候帮助别人就是帮助自己。在二战时辽宁省政协原党组副书记副主席孙远良严重违纪违法被开除党籍中央纪委国家监委网站讯日前,经中共中央批准,中央纪委国家监委对辽宁省政协原党组副书记副主席孙远良严重违纪违法问题进行了立案审查调查。经查,孙远良背弃初心使命,丧失党性原则,对党不忠喜迎二十大中国共产党历次党代会回顾(十二)中国共产党第十二次代表大会喜迎党的二十大中国共产党历次党代会回顾19212022开篇语欲知大道,必先为史。回望奋进路,从播下革命火种的小小红船,到领航复兴伟业的巍巍巨轮,中国共产党走过了伟大辉煌的历程。在党他是蒋介石御用替身,瞒过了许多人,却被刘湘识破1934年11月的一天,杭州公安局何云的办公室,响起一阵急促的电话铃声,电话是蒋介石秘书长陈立夫打来的,他吩咐何云火速赶往南京总统府,有要事安排。什么事这样紧急?何云很疑惑?原来,十大元帅中,蒋介石拉拢过好几位,开出条件丰厚无比,却没人理他1955年,新中国举办了有史以来第一次授衔仪式,此次授衔仪式上,最为引人注目的莫过于朱德彭德怀林彪刘伯承等人在列的十大元帅。这些解放军优秀统帅大都从红军时期便参加革命,历经抗日战争47年蒋介石来到延安,参观毛主席的窑洞,晚年感叹后悔去延安1947年3月19日,国民革命军第1军第1师第1旅率先开进延安,宣告了延安的光复。由1军1师1旅承担这一任务并非巧合,而是胡宗南有意安排这是他特有的仪式感。国军进入延安城后,胡宗南山东省教育厅综合改革处原处长梅亚宁严重违纪违法被开除党籍和公职日前,经山东省纪委监委指定管辖,德州市纪委监委对山东省教育厅综合改革处原处长梅亚宁严重违纪违法问题进行了立案审查调查。经查,梅亚宁背离初心使命,丧失理想信念,无视中央八项规定精神,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网