网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

springboot微服务自定义starter原理的示例分析-创新互联

这篇文章主要介绍了springboot微服务自定义starter原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

伊美ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

使用spring boot开发微服务后,工程的数量大大增加(一定要按照领域来切,不要一个中间件客户端包一个),让各个jar从开发和运行时自包含成了一个重要的内容之一。spring boot starter就可以用来解决该问题(没事启动时别依赖于applicationContext.getBean获取bean进行处理,依赖关系太折腾,有时候在复杂系统中解决此事比较麻烦,需要修改开源框架代码才能实现,反过来修改开源源码后,维护也是个麻烦事)。言归正传,说说自定义starter。首先请熟悉spring boot的核心理念,不然容易为了starter而starter,这种情况太多了。

创建一个maven项目,在pom文件中添加如下依赖:

         org.springframework.boot      spring-boot-autoconfigure      2.0.0.RELEASE                          org.springframework.boot        spring-boot-maven-plugin            

创建properties属性类,用于读取属性(当然可选,如果一开始没有按照spring boot autoconfig的套路来,改起来还是挺费劲的,但是一旦这么做了,就会想,TMD这才是真正的开发模式,@Value那套早该丢了)。

@ConfigurationProperties(prefix = "com.xxx")public class HelloServiceProperties {  private String name = "james";  private String hobby = "cc";  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  public String getHobby() {    return hobby;  }  public void setHobby(String hobby) {    this.hobby = hobby;  }}

@ConfigurationProperties配置此注解可以自动导入application.properties配置文件中的属性,前提需要指定属性前缀prefix。

3.创建配置类

public class HelloService {  private String name;  private String hobby;  public String getName() {    return "name is " + name;  }  public String getHobby() {    return "hobby is " + hobby;  }  public void setName(String name) {    this.name = name;  }  public void setHobby(String hobby) {    this.hobby = hobby;  }}

4.创建自动配置类:

@Configuration@EnableConfigurationProperties(HelloServiceProperties.class)@ConditionalOnClass(HelloServiceConfiguration.class)@ConditionalOnProperty(prefix = "com.xxx", value = "enabled", matchIfMissing = true)@ComponentScan({"com.xxx"}) // 如果bean比较多,一般采用这种方式public class HelloServiceAutoConfiguration {  @Autowired  private HelloServiceProperties helloServiceProperties;  @Bean // bean比较少、且顺序和逻辑有特殊要求的模块,一般采用这种方式  @ConditionalOnMissingBean(HelloServiceConfiguration.class)  public HelloServiceConfiguration helloServiceConfiguration() {    HelloService helloService = new HelloService();    helloService.setName(helloServiceProperties.getName());    helloService.setHobby(helloServiceProperties.getHobby());    return helloService;  }}

5.在resources文件夹下面新建一个META-INF文件,并在下面创建spring.factories文件,将4中的配置类进行注册。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xxx.HelloServiceAutoConfiguration

6.新建一个springboot项目,在pom文件中添加刚刚打包的jar的坐标。

7.使用@Autowired访问接口。

@SpringBootApplication@RestControllerpublic class Springboot03Application {  @Autowired  private HelloService helloService;  public static void main(String[] args) {    SpringApplication.run(Springboot03Application.class, args);  }  @RequestMapping("/name")  public String getName() {    return helloService.getName();  }  @RequestMapping("/hobby")  public String getHobby() {    return helloService.getHobby();  }}

相比原来要使用@Import注解导入一个@Configuration类,或者在一处集中维护ComponentScan的所有路径,使用autoconfigure starter可以让应用明显实现的更加自包含和解耦。

感谢你能够认真阅读完这篇文章,希望小编分享的“springboot微服务自定义starter原理的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联网站建设公司,,关注创新互联行业资讯频道,更多相关知识等着你来学习!


分享题目:springboot微服务自定义starter原理的示例分析-创新互联
URL链接:http://bjjierui.cn/article/dohedd.html

其他资讯