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

通过注解实现自定义SpringBootStarter自动装配

  以Spring boot 作为微服务开发的项目中会用到很多第三方,或者自建的一些依赖SDK,例如 分布式锁、文件管理、数据库连接、统一错误拦截等组件。为了达到通用的目的,都会创建自定义的spring boot stater 组件。以下介绍创建步骤:
  一、创建Maven测试项目test-starter pom文件如下: 	 		com.test.starter 		test-starter 		1.0.0 	 	4.0.0 	test-spring-boot-starter 	jar 	 		 			org.springframework.boot 			spring-boot-autoconfigure       2.3.2.RELEASE 		 	 	 		test-spring-boot-starter 	 
  二、创建自动装配类TestServiceConfiguration.javapackage com.test.spring.boot.starter.config;  import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  import com.test.spring.boot.starter.TestService; import com.test.spring.boot.starter.TestServiceImpl;   @Configuration @EnableConfigurationProperties(value = TestServiceProperties.class) public class TestServiceConfiguration {          @Autowired         private TestServiceProperties properties;           @Bean         public TestService  getTestService() {           return new TestServiceImpl(properties);         } }
  三、创建配置类TestServiceProperties.javapackage com.test.spring.boot.starter.config;  import org.springframework.boot.context.properties.ConfigurationProperties;  import lombok.Data; import lombok.ToString;  @Data @ToString @ConfigurationProperties(prefix = "test.starter") public class TestServiceProperties {          /**          * 客户端ID          */         private String clientId;          /**          * 客户端名称          */         private String clientName; }
  四、创建提供服务的接口TestService.javapackage com.test.spring.boot.starter;  public interface TestService {        /**        * 测试        * @param name        * @return        */       String sayHello(String name); }
  五、创建TestService的实现类型TestServiceImpl.javapackage com.test.spring.boot.starter;  import com.test.spring.boot.starter.config.TestServiceProperties;  /**  * 服务实现  * @author test  *  */ public class TestServiceImpl implements TestService {          private TestServiceProperties properties;          public TestServiceImpl(TestServiceProperties properties) {           this.properties = properties;         }          @Override         public String sayHello(String name) {           return "clientId: "+properties.getClientId()+",clientName: "                        +properties.getClientName()+",welcome "+name+"!";         } }
  六、创建自定义注解@EnableTestpackage com.test.spring.boot.starter.annotation;  import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;  import org.springframework.context.annotation.Import;  import com.test.spring.boot.starter.config.TestServiceConfiguration;  /**  * 自定义自动装配启动注解  * @author test  *  */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Import({TestServiceConfiguration.class}) public @interface EnableTest {  }
  通过以上步骤就实现了自定义Spring boot starter test-spring-boot-starter 组件,下面创建测试项目去调用这个starter组件。
  创建starter组件使用项目
  一、创建maven测试项目test-service,pom文件如下 	 		com.test.starter 		test-starter 		1.0.0 	 	4.0.0 	test-service 	jar  	 		 			org.springframework.boot 			spring-boot-starter-web 		 		 			org.springframework.boot 			spring-boot-starter-test 			test 			 				 					org.junit.vintage 					junit-vintage-engine 				 			 		    		 		    com.test.starter 			test-spring-boot-starter 			1.0.0 		 	 	 		test-service 		 			 				org.springframework.boot 				spring-boot-maven-plugin 				${spring.boot.version} 				 					 						 							repackage 						 					 				 			 		 	 
  二、创建启动类Application.javapackage com.test.service;   import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan;  import com.test.spring.boot.starter.annotation.EnableTest;  @EnableTest    //启动自定义组件 @ComponentScan(basePackages = {  		"com.test.service"}) @SpringBootApplication public class Application {         public static void main(String[] args) {           SpringApplication.run(Application.class, args);          } }
  三、创建配置文件application.ymltest:   starter:      client-id: test-service-01      client-name: test-service
  四、创建测试类TestController.javapackage com.test.service.controller;  import javax.annotation.Resource;  import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  import com.test.spring.boot.starter.TestService;  @RestController @RequestMapping("/v1/test") public class TestController {            @Resource         private TestService testService;          @GetMapping("/{name}")         public String hello(@PathVariable("name")String name) {           return testService.sayHello(name);         } }
  到这里整个自定义spring boot starter 创建就完成了,同时也依赖到项目中进行使用了。
  项目代码:starter-test: 自定义starter组件

今日上市希荻微来源中国经济网中国经济网北京1月21日讯今日,希荻微(688173)新股上市。希荻微是国内领先的半导体和集成电路设计企业之一,主营业务为包括电源管理芯片及信号链芯片在内的模拟集成电2022年中国传统企业将刮低代码风暴?产业CEO访谈2021年是低代码全面走向资本市场的一年,它站在风口之上,正在准备一场技术风暴。日前,Mendix发布了全球低代码发展现状调研报告。报告显示,全球有77的受访企业已经开始使用低代码字节跳动裁撤战投部门?互联网巨头有大动作,股权投资生态或迎变化字节跳动的战略投资部解散?1月19日,这一消息在网络疯传,字节跳动回应称系对公司业务进行盘点与分析,将战略投资部员工分散到各个业务条线中。腾讯退出京东第一大股东,阿里巴巴退出优酷股为什么说小区安装电子智能锁的要小心吸铁石?在派出所工作的朋友告诉我,很多小偷可以在不知不觉中,进入安装智能电子锁的家里进行偷盗,而如此轻松的秘密竟然是一个吸铁石!房子是我们每一个家庭中必不可少的港湾,当我们工作一天后,一个新能源汽车与燃油车的区别一动力系统燃油汽车有着发动机变速箱以及一系列的附加配件新能源则是靠电动机直接输出,电池组提供电能,固定齿比传动。所以在驾驶感受上能明显感觉到,燃油汽车的动力输出需要等待,扭矩也需要1月20日晚间股市利好消息一览一板块利好1北京经开区管委会副主任孔磊2022年北京市高级别自动驾驶示范区启动3。0阶段建设北京经济技术开发区管委会副主任北京市高级别自动驾驶示范区工作办公室主任孔磊表示,今年,示2022年1月适合买华为Mate40Pro还是iPhone13呢?屏幕方面都采用的是一块OLED屏幕的材质,iPhone13支持60Hz的屏幕刷新率,而华为mate40Pro支持90Hz屏幕刷新率。核心配置方面iPhone13能够为用户带来更好的vivoPad已正式入网内置7860mAh电池44W快充据悉,vivo平板已于近日正式入网。该款平板产品搭载高通骁龙870移动平台,采用120HzLCD全面屏,内置7860mAh电池44W快充。根据知情博主曝光,该款平板的价格应该在2K超越容错阈值硅量子计算机保真度获重大突破来源科技日报英国自然杂志19日连发三篇论文,来自三个团队的科学家们在开发容错量子计算机方面取得重要突破。他们验证了硅双量子位门保真度,超越了容错计算机的阈值(99)。研究结果证实,怎样理解比特币之类的虚拟货币?(二)对于比特币的认识,最好分解成两个层次来理解首先,比特币的物理形态是什么其次,比特币被当成了什么东西来使用。就比特币的物理形态而言,它只是电子计算机在某种特殊算法下运行与计算的结果。辅助驾驶与自动驾驶区别自动驾驶跟辅助驾驶,本质上来说,其实是谁在开车的区别。能够为开车提供方便让我们人开得更舒服的,就是辅助驾驶如果车子完全不用人管,即使是在复杂路况下也是系统自己能操作的,才叫自动驾驶
体育明星名人故事空中飞人乔丹一叛逆乔丹1963年2月17日,乔丹出生在纽约布鲁克林黑人区,随后他们一家迁到了北卡罗莱纳州的海明顿。这是个只有几万人的小城,终年吹拂着温熙的海风。迈克尔常常弄出点恶作剧让父母伤神艾灸排烟净化器就选好品牌伊斐净宝找艾灸排烟净化器生产厂家尽在伊斐净宝,吸力大,负压高,烟雾多重净化。伊斐净宝多家世界500强选用,有效处理实验室,流水线,车间焊锡烟雾。伊斐净宝成功开发了一系列的空气净化器烟尘过滤体育明星名人的故事足球明星梅西的故事5岁时梅西开始为当地的格兰多里俱乐部踢球,教练就是他的父亲。7岁的时候这个小家伙就在纽维尔老男孩队倍受称赞。但梅西在11岁时被诊断出发育荷尔蒙缺乏,而这会阻碍他的骨骼生长。家里的经缺芯阵痛之下,车企的困局与机遇这次芯片危机或许是车企在智能电动汽车时代拉开差距的转折点。文王斌斌芯片短缺,是制造业2021年至今都没有迈过去的坎,汽车行业也是重灾区。无论美德日韩等国际车企,还是国内的自主品牌和最新消息四川泸州市泸县发生6。0级地震成都重庆等多地震感明显我们来看一条最新消息,中国地震台网正式测定,今天凌晨0433在四川泸州市泸县北纬二十九点二零度,东经105。34度发生6。0级地震,震源深度十千米,中国地震采访称,震中离最近的福集解锁都市出行新体验KiWiEV智能配置信息曝光7月19日,上汽通用五菱旗下新宝骏汽车对外发布了KiWiEV的科技配置信息,新车配备丰富的智能化配置,配合数字座舱设计,将为拥戴带来更便捷智能的出行体验。参考之前的消息,新车预计今更强调智能化中期改款小鹏G3i正式发布近日,小鹏汽车对外发布了小鹏G3i的官图,新车首次采用了XRobotFace家族式设计语言,并配备XPILOT自动驾驶辅助XmartOS车载智能系统,将在今年7月9日正式上市。外观x86AI处理器威盛强势归来台湾威盛电子股份有限公司已在x86处理器领域沉寂多年,却在去年年末为大家送上了一记重磅礼炮!2019年11月,威盛(VIA)旗下已有24年历史的处理器研发部门CenTaur开发出了使用索尼WI1000XM2一个月以后各位好,年前入手了一条索尼WI1000XM2,到目前使用也近一个多月的时间了,这篇文章将简单聊一聊我在使用这款耳机时的感受及一些个人看法。先来说说外观部分,虽说是各花入各眼的东西,索尼ZX505or飞傲M11Pro?我的前端选择思路近期想入个前端,一番深思熟虑后(此处略去一万字内心戏),初步锁定索尼NWZX505和飞傲M11Pro这两个推子考虑到要搭配的是我的索尼IERM9,此番一旦入手,可能在未来很长一段时AMD在CES2020接连甩出锐龙40003990X多个大招!对手如何应对?2020年1月6日下午两点,拉斯维加斯就在刚才,AMD一口气发布了锐龙4800H4800U等锐龙4000系列移动处理器以及第三代线程撕裂者旗舰3990X处理器。严格意义上来说,今天