使⽤SpringBoot⾃定义starter的完整步骤
前⾔
使⽤过SpringBoot的都应该知道,⼀个SpringBoot 项⽬就是由⼀个⼀个 Starter 组成的,⼀个 Starter 代表该项⽬的SpringBoot 启动依赖,除了官⽅已有的 Starter,我们可以根据⾃⼰的需要⾃定义新的Starter。
⼀、⾃定义SpringBoot Starter
⾃定义Starter,⾸选需要实现⾃动化配置,⽽要实现⾃动化配置需要满⾜以下两个条件:
(1)能够⾃动配置项⽬所需要的配置信息,也就是⾃动加载依赖环境;
(2)能够根据项⽬提供的信息⾃动⽣成Bean,并且注册到Bean管理容器中;
要实现⾃动化配置需要在项⽬的l⽂件中引⼊如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
根据需要⾃定义Starter的实现过程⼤致如下(以我定义的Starter为例):
⼯程⽬录结构:
1、引⼊项⽬的配置依赖
<dependency>
<groupId>org.springframework.boot</groupId>
</dependency>
2、创建xxxService类,完成相关的操作逻辑
代码:StringService.java
public class StringService {
private String str1;
private String str2;
private String default_str;
public String getStr1() {
return str1;
}
public void setStr1(String str1) {
this.str1 = str1;
}
public String getStr2() {
return str2;
}
public void setStr2(String str2) {
this.str2 = str2;
}
适合新手的spring boot
public String getDefault_str() {
return default_str;
}
public void setDefault_str(String default_str) {
this.default_str = default_str;
}
public String addStr(){
if(str1 != null){
if(str2 != null){
return str1 + "," + str2;
}
return str1;
}
return default_str;
}
}
3、定义xxxProperties类,属性配置类,完成属性配置相关的操作,⽐如设置属性前缀,⽤于在application.properties中配置代码:StringProperties.java
//指定项⽬在属性⽂件中配置的前缀为str,即可以在属性⽂件中通过 str.str1=springboot,就可以改变属性类字段 str1 的值了
@SuppressWarnings("ConfigurationProperties")
@ConfigurationProperties(prefix = "str")
public class StringProperties {
public static final String DEFAULT_STR1 = "I know, you need me";
public static final String DEFAULT_STR2 = "but I also need you";
private String str1 = DEFAULT_STR1;
private String str2 = DEFAULT_STR2;
public String getStr1() {
return str1;
}
public void setStr1(String str1) {
this.str1 = str1;
public String getStr2() {
return str2;
}
public void setStr2(String str2) {
this.str2 = str2;
}
}
4、定义xxxConfigurationProperties类,⾃动配置类,⽤于完成Bean创建等⼯作
代码:StringAutoConfiguration.java
// 定义 java 配置类
@Configuration
//引⼊StringService
@ConditionalOnClass({StringService.class})
/
/ 将 application.properties 的相关的属性字段与该类⼀⼀对应,并⽣成 Bean
@EnableConfigurationProperties(StringProperties.class)
public class StringAutoConfiguration {
// 注⼊属性类
@Autowired
private StringProperties stringProperties;
@Bean
// 当容器没有这个 Bean 的时候才创建这个 Bean
@ConditionalOnMissingBean(StringService.class)
public StringService helloworldService() {
StringService stringService = new StringService();
stringService.Str1());
stringService.Str2());
return stringService;
}
}
5、在resources下创建⽬录META-INF,在 META-INF ⽬录下创建 spring.factories,在SpringBoot启动时会根据此⽂件来加载项⽬的⾃动化配置类
代码:spring.factories
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.fig.StringAutoConfiguration
6、到这⾥⾃定义Starter就定义完成了,只需在其他项⽬中引⼊即可使⽤。
⼆、其他项⽬中使⽤⾃定义的Starter
1、在新项⽬中引⼊⾃定义Starter依赖配置
创建⼀个新的SpringBoot项⽬,在项⽬的l⽂件中引⼊⾃定义SpringBoot Starter的依赖配置如下:
<!--引⼊⾃定义Starter-->
<dependency>
<groupId>com.lhf.springboot</groupId>
<artifactId>spring-boot-starter-string</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2、编写⼀个简单的Controller
@RestController
public class StringController {
@Autowired
private StringService stringService; //引⼊⾃定义Starter中的StringService
@RequestMapping("/")
public String addString(){
return stringService.addStr();
}
3、编写属性配置⽂件,内容如下:
#配置⾃定义的属性信息
str.str1=为什么我的眼⾥常含泪⽔
str.str2=那是因为我对你爱的深沉
4、启动项⽬进⾏访问,效果如图:
结语:
到此这篇关于使⽤SpringBoot⾃定义starter的⽂章就介绍到这了,更多相关SpringBoot⾃定义starter内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论