自定义STARTER实例

springboot自定义STARTER实例

过程描述:
一、创建一个empty-Project 。然后追加两个module。一个是maven项目,用于做自动配置的属性和功能类,另一个是web项目,用来引用autoconfigurer配置工程。
在这里插入图片描述
1、在starter的pom.xml中,引用autoconfigurer。

<groupId>com.zhiyuan.starter</groupId>
<artifactId>zhiyuan-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>com.zhiyuan.starter</groupId>
        <artifactId>zhiyuan-spring-boot-starter-autoconfigurer</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

2、自动配置autoconfigurer的pom.xml,并将test相关的引用和build都删掉。

org.springframework.boot
spring-boot-starter-parent
2.2.5.RELEASE


com.zhiyuan.starter
zhiyuan-spring-boot-starter-autoconfigurer
0.0.1-SNAPSHOT
zhiyuan-spring-boot-starter-autoconfigurer
Demo project for Spring Boot

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

3、autoconfigurer项目的结构,删除autoconfigurer中的test模块和相应的配置。
在这里插入图片描述
二、开始写代码
1、在autoconfigurer工程中,创建TalkServiceAutoconfiguration.java
/@Configuration用于定义配置类,可替换xml配置文件,
被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描
,并用于构建bean定义,初始化Spring容器。
/
@Configuration
//web应用生效,根据@Conditional不同的条件创建不同的bean。Condition是个接口,需要实现matches方法,返回true则注入bean,false则不注入。
@ConditionalOnWebApplication
//相当于把使用 @ConfigurationProperties 的类进行了一次注入。
@EnableConfigurationProperties(TalKProperties.class)
public class TalkServiceAutoconfiguration {
@Autowired
TalKProperties talKProperties;
@Bean
public TalkService getTalkService(){
TalkService talkService=new TalkService();
talkService.setTalKProperties(talKProperties);
return talkService;

}

}
2、创建TalKProperties.java文件
//@ConfigurationProperties 注解,我们可以方便的获取这些参数值.
@ConfigurationProperties(prefix = “zhiyuan.talk”)
public class TalKProperties {
private String prefix;
private String suffix;

public String getPrefix() {
    return prefix;
}

public void setPrefix(String prefix) {
    this.prefix = prefix;
}

public String getSuffix() {
    return suffix;
}

public void setSuffix(String suffix) {
    this.suffix = suffix;
}

}
3、创建调用类TalkService.java.
public class TalkService {
TalKProperties talKProperties;

public TalKProperties getTalKProperties() {
    return talKProperties;
}

public void setTalKProperties(TalKProperties talKProperties) {
    this.talKProperties = talKProperties;
}

public String talkToLead(String name) {
    return talKProperties.getPrefix() +"----"+name +"-----" + talKProperties.getSuffix();
}

}
4、在META-INFO中创建配置文件spring.factories。在这里插入图片描述
文件中配置内容
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.zhiyuan.starter.demo.TalkServiceAutoconfiguration
5、将autoconfigurer工程,install发布。starter工程,install发布
在这里插入图片描述
三、新建一个web工程,
1、在pom中引入发布的starter,并新建类
@RestController
public class TalkController {
@Autowired
TalkService talkService;
@GetMapping("/talk")
public String talk(){
return talkService.talkToLead(“talk to”);
}
}
2,调用结果
在这里插入图片描述
四,springboot实现自定义satrter,代码实现的过程描述。
1、springboot读取java配置类中的全文件路径属性,也就是放到META-INFO下的一个配置文件spring.factories配置文件。
2、根据配置文件中的配置,加载@Configuration标注的TalkServiceAutoconfiguration自动配置的java类。
3、再在类中@EnableConfigurationProperties标注,注入TalKProperties.java属性文件。
4、通过@bean,将创建一个talkService实例化到容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值