范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

面试官如何手写一个SpringBootStarter?

  当下Java Web开发领域,毫无疑问SpringBoot已经只手遮天。
  没有SpringBoot之前,如果我们要搭建一个Spring Web应用,要多繁杂有多繁杂,折腾半天,也不能能搭建一个可运行的应用。我们需要做:配置Servlet、配置IOC、配置tomcat等等以及随处可见的各种xml,反正是烦的很。
  有了Spring Boot之后,就少了很多XML配置,而且注解也是特别的简单,我们就不需要更多额外的关注,可以专注编码。
  在使用Spring Boot之后,效率上大大的提高了。Spring Boot也发现了很多Starter模块,比如spring-boot-starter-web、spring-boot-starter-tomcat、spring-boot-starter-test等等,让我们可以开箱即用!
  Spring Boot具有这么多的优点,在面试中也是必问知识之一。比如面试官问你:如何自己写一个starter,供其他人使用呢?
  要回答这个问题,首先我们需要弄明白starter是个什么东西?你可以理解它是一个可插拔式的插件。通过starter,能够简化之前繁杂的配置,它帮助我们整合需要的配置和依赖,统一集成到starter中,再通过自动装配生成Bean,注入Spring容器中供我们使用。
  弄明白starter是什么,接下来我们一起动手搞一个starter试试看看。
  1、引入spring-boot-autoconfigure 		 			org.springframework.boot 			spring-boot-autoconfigure 		
  2、编写供其他服务使用的服务类MyStarterServicepackage com.harry.game.rts.server;  /**  * @author harry  * @date 2022-01-27 5:50 PM  */ public class MyStarterService {      private String name;     private String pwd;     /**      *      */     public String say() {         return "my name is " + name;     }      public MyStarterService(String name, String pwd) {         this.name = name;         this.pwd = pwd;     }      public MyStarterService() {      }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public String getPwd() {         return pwd;     }      public void setPwd(String pwd) {         this.pwd = pwd;     } }
  3、用@ConfigurationProperties将application.xml中的属性映射为配置类 package com.harry.game.rts.server;  import org.springframework.boot.context.properties.ConfigurationProperties;  /**  * @author harry  * @date 2022-01-27 5:54 PM  */ @ConfigurationProperties(prefix = "my-starter.service") public class MyStarterServiceProperties {      private String name;     private String pwd;      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public String getPwd() {         return pwd;     }      public void setPwd(String pwd) {         this.pwd = pwd;     } }
  4、自动装配类MyStarterServiceAutoConfigurationpackage com.harry.game.rts.server;  import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  /**  * @author harry  * @date 2022-01-27 5:58 PM  */ @Configuration @ConditionalOnClass(MyStarterService.class) @EnableConfigurationProperties(MyStarterServiceProperties.class) public class MyStarterServiceAutoConfiguration {      @Bean     public MyStarterService myStarterService(MyStarterServiceProperties properties) {         return new MyStarterService(properties.getName(),properties.getPwd());     }   }
  5、在src->main->java->resource目录下建META-INF文件夹,放spring.factories文件,文件内容如下: org.springframework.boot.autoconfigure.EnableAutoConfiguration= com.harry.game.rts.server.MyStarterServiceAutoConfiguration
  至此,一个starter就已经完成了!

中国工程院院士徐建国新冠病毒是自然原性,不可能是人工制造中新网北京8月13日电(记者黄钰钦)中国工程院院士医学微生物学家徐建国13日在新冠病毒溯源问题驻华使节吹风会上表示,新冠病毒是自然原性,不可能是人工制造。他介绍称,从生物安全角度,轻薄快充我都要!这款充电头带起苹果全家桶,体积只有饼干那么大现在年轻人身边的数码设备越来越多,像许多果粉,他们除了最常用的iPhone手机以外,还往往有iPad平板和Macbook等多个设备来应对不同场合的需求,然而设备多不是什么问题,但是助听器与电视连接技术世界电视日电视和助听器技术发展日新月异11月21日是世界电视日自从第一届世界电视论坛于1996年11月21日在联合国召开后,1996年12月17日联合国大会宣布将这一天定为世界电视苹果M2芯片将于2022年上市,采用4nm工艺制造2020年11月11日,苹果隆重推出AppleM1芯片,由台积电使用其5nm工艺节点制造,使用ARM的架构,拥有高达160亿个晶体管,而A14仿生芯片组内部只有118亿个晶体管。A2021买手机追求性能拍照和气质,没理由不选这3款手机每一款手机都有自己主打的方向和定位,而对于那些追求性能拍照和气质的消费者来说,今年没有理由不选这3款手机,尽管它们价格都不低,但绝对值得一看。华为P50Pro尽管麒麟9000性能不RealmeX系列智能机已经谢幕RealmeGT系列将取而代之如果您出于某种原因而喜欢上了Realme的X系列智能机,那这里有个坏消息。该公司欧洲与印度首席执行官MadhavSheth刚刚在接受TechRadar采访时透露,后续将不再提供X系每日科普你的watch是怎么测心率的?不少业内人士都认为未来可穿戴智能手表手环需要向着更加专业化和细分化的应用领域发展,其中针对运动人群和健康检测就是两个很好的方向。那么我们不妨通过AppleWatch来了解一下光学心微软云PC漏洞可被明文转储MicrosoftAzure凭据一位安全研究人员,刚刚找到了一种利用Mimikatz,从微软Windows365CloudPC服务中转储用户未加密的明文MicrosoftAzure凭据的方法。据悉,Mimikat关于投资自动驾驶的一丁点前瞻思考毫无疑问,自动驾驶是汽车的下一个发展趋势。但目前在技术方向上还有不少分歧,以特斯拉为代表的厂商更注重视觉算法,而小鹏蔚来等厂商则倾向于提升激光雷达等硬件感知。两者方案各有优劣,既然骨传导屏幕发声等,曾经很火的黑科技,为何突然销声匿迹了?如果说黑科技,这些年可以说层出不穷,不过有许多被发扬光大了,但有些却逐渐淡出人们视野了,下面就来聊聊前几年很火,现在却没什么关注度的黑科技,这些黑科技为什么会销声匿迹了?骨传导耳机仅1899元,6nm芯片66W快充128GB,荣耀新款5G手机定价亲民了解行情的都知道,荣耀独立运营之后,上半年虽然也推出了不少产品,但是由于独立的时间相对短暂,推出的产品似乎给人一种匆匆忙忙上架的感觉,对比市面上的竞品,多多少少有些竞争力不足,比如
马自达CX50专利渲染图曝光,搭3。0L六缸引擎如果大家想买一辆宝马,但预算又够不上,会不会考虑马自达?毕竟它也被称为东瀛宝马。近日,海外媒体曝光了一组马自达全新CX50的外观专利图,还有媒体制作了它的渲染图。新车将于明年正式发入门合资VS顶配自主,20万级SUV的鸡头凤尾该怎么选?选车,鸡头还是凤尾,是个永远的话题。尤其是买SUV时,到底该买合资品牌入门版还是自主品牌顶配?这个问题一直是都是许多消费者的痛点,因为相同的价格,合资品牌和自主品牌相差的或许就是入和保时捷同平台,奥迪Q6etron路试谍照曝光现如今,各大车企都在加速发布新能源车型。不像宝马iX1的糊弄人,采用油改电的做法作为奥迪的首款新能源车型,奥迪etron来自全新的纯电动平台,随后etronSportbacketr奔驰G级军用版官图曝光,外观性能更霸气,但只能看着眼馋?随着城市化的推进,传统的硬派越野车好像离我们越来越远了,很多车企甚至直接放弃了非承载车身。但不得不说的,得不到的永远在骚动,尽管硬派越野车变得越来越小众了,坐起来也并不舒服,但每个全新标致4008设计图曝光,外观前卫个性,能上演绝地大反击吗?近期,法系车的雪铁龙凡尔赛C5X,以独特的命名方式,及较高的性价比,似乎重新打开了国内的汽车市场。不过雪铁龙凡尔赛C5X的整体虽然时尚,跟之前法系车的前卫感有了一些区别。想要享受更和三缸机说拜拜,福克斯换1。6T四缸,PK本田思域?对于三缸机,不少人都敬而远之,再有口碑和销量的车型都扛不住。比如,福特福克斯,作为曾经小钢炮界的佼佼者,它在换装完三缸机后,销量和口碑都有明显下滑。但好消息是,在不久的将来,搭载四绿牌加油两不误,续航超800km的中大型SUV,岚图FREE还是理想ONE?经过了今年的国庆长假,很多相信有不少小伙伴深刻体会到纯电车型的痛点。因为这次的假期,部分驾驶纯电车型长途出行的小伙伴,不是因为堵车,而是因为充电问题,把8个小时能跑完的路程,硬生生2022款AMGS63e谍照曝光,V8插混,预计明年上市近日,海外媒体曝光了一组2022款奔驰AMGS63e的路试谍照。这次谍照除了前脸和车尾做了伪装,整车其余地方没有做任何伪装。据悉,2022款奔驰AMGS63e会搭载插电式混合动力系要买荣放的再等等,顶配版来了,你觉得凌放值得入手吗?10月13日,一汽丰田凌放曝光,车辆定位为中型SUV。有许多打算买荣放的网友表示要等等了,毕竟车辆的产品力会更强,也有些人表示买它还不如买荣放呢,性价比更高,你觉得呢?其实,凌放并比亚迪汉DMi路试谍照曝光,油耗低至0。8L,比Model3更有吸引力?在刚刚过去的9月,比亚迪汉的销量突破了一万台,同比增长115。而从去年7月份上市至今,它的累计销量已经超过12万台,足以见得它在市场中的认可度。所以,当比亚迪官方公布将要推出这款车长安欧尚X7PLUS上市7。99万起,动力配置都升级,值得买吗?10月17日,长安欧尚X7PLUS正式上市。新车全系标配蓝鲸新一代NE1。5T发动机,共推出9款车型,提供6种车身配色供用户选择,官方指导售价7。99万13。39万元。作为长安汽车