SpringBoot的SPI机制自定义starter

自定义starter步骤:

1.创建自定义starter的业务代码:
参考如下:

在这里插入图片描述

HelloController类:

@RestController
public class HelloController {


    @Autowired //自动注入helloService
    HelloService helloService;

//    sayhello请求
    @GetMapping("sayHello")
    public String sayHello(){
        return helloService.sayHello();
    }
}

HelloProperties类:

@ConfigurationProperties(prefix = "say")//绑定配置文件前缀
@Component
@Data
public class HelloProperties {
    private String name;
}

HelloService类:

@Service
public class HelloService {


    @Autowired//自动注入helloProperties
    HelloProperties helloProperties;

    public String sayHello(){
        return "你好!"+helloProperties.getName();
    }
}

2.导入依赖:导入此依赖,HelloProperties绑定的配置文件前缀后,再重启SpringBoot项目,当再在application.properties中配置HelloProperties的属性会有自动提示

注意:一定要重启项目!!!!

在这里插入图片描述

<!--        导入配置处理器,配置文件自定义的properties配置都会有提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

在这里插入图片描述

3.删除程序启动类:因为创建自定义Starter是为了作为其他项目的包的,不需要启动项

在这里插入图片描述

4.仿照SpringBoot自动装配的原理,创建XxxAutoConfiguration自动装配类并导入业务组件:

@Import({HelloController.class, HelloService.class, HelloProperties.class})
@Configuration
public class HelloAutoconfiguration {
}

5

  • 依赖SpringBoot的SPI机制(可自己查询SPI机制)
  • META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中编写好我们自动配置类的全类名即可
  • 项目启动,自动加载我们的自动配置类

在这里插入图片描述

此时自定义starter已经完成

6.测试

创建一个新的模块并引入自定义starter

<dependency>
    <groupId>com.example</groupId>
    <artifactId>autoSayHello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

在新的模块的application.properies配置文件中可以编写自定义starter中helloProperties组件的属性

在这里插入图片描述

之后直接启动项目即可:

在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值