十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍了怎么定义一个spring boot starter,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联公司客户idc服务中心,提供四川电信机房托管、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。
一、建立模块
名称规范:XXX-spring-boot-starter
二、编写Bean
public class BeanConfig { @Bean TestBean testBean(){ TestBean testBean = new TestBean(); return testBean; } }
这里我们有一个BeanConfig类,通过它去注入一些Bean
三、将BeanConfig交给Spring容器
编写spring.factories: 创建resources\META-INF\spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.config.BeanConfig
那么在启动时会通过AutoConfigurationImportSelector将BeanConfig注入到容器中。
四、打jar,生成maven依赖(略)
导入依赖即可以生效了。
如果想自定义一些配置怎么去做?
编写配置类:
@ConfigurationProperties("com.test") // 需要配合@EnableConfigurationProperties使用 public class BeanProperties { private String testName = "default-name"; private Long telephoneNumber; // 必须有set方法 public void setTestName(String testName) { this.testName = testName; } public void setTelephoneNumber(Long telephoneNumber) { this.telephoneNumber = telephoneNumber; } @PostConstruct void init(){ String name = this.testName; System.out.println("-----------------------------"+name); Long telephoneNumber = this.telephoneNumber; System.out.println("-----------------------------"+telephoneNumber); } }
其中的@ConfigurationProperties注解要和@EnableConfigurationProperties搭配使用(实际也是一个EnableConfigurationPropertiesRegistrar)
那么在BeanConfig上添加注解:@EnableConfigurationProperties(BeanProperties.class)
@EnableConfigurationProperties(BeanProperties.class) public class BeanConfig { @Bean TestBean testBean(){ TestBean testBean = new TestBean(); return testBean; } }
项目中引入依赖后,只需要在配置文件中指定值就可以了,这里的前缀要和@ConfigurationProperties指定的值相同
#com.test.test-name=zhangsan com.test.telephone-number=12300000000
不指定则使用定义的默认值:
-----------------------------default-name -----------------------------12300000000
当然,@ConfigurationProperties注解也不一定要和@EnableConfigurationProperties搭配使用,前提是spring容器要知道你的@ConfigurationProperties配置类
修改BeanConfig类,将注解改为@Import(BeanProperties.class)也是有效的。
@Import(BeanProperties.class) public class BeanConfig { @Bean TestBean testBean(){ TestBean testBean = new TestBean(); return testBean; } }
如果不通过SPI方式导入怎么做?
还是@Import注解方式,首先自定义注解:
@Target({java.lang.annotation.ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Import({BeanConfig.class}) public @interface StarterAnnotation { }
这里Import导入了BeanConfig
然后项目中启动类加上注解@StarterAnnotation即可。
感谢你能够认真阅读完这篇文章,希望小编分享的“怎么定义一个spring boot starter”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!