SpringBoot如何封装自定义Starter

抽取封装代码

  1. 创建对应的XX-starter项目
  2. 导入项目需要的依赖以及对应的代码
  3. 通过**@ConfigurationProperties**进行配置文件与属性类的绑定,并且通过**@EnableConfigurationProperties**使得@ConfigurationProperties生效
  4. 导入**spring-boot-configuration-processor**依赖,使得在application.properties文件中能有**相应的提示**
  5. 保证starter项目中能够独立运行
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

@Import封装

  1. 将starter项目封装好后,因为Springboot程序**只会扫描启动类所在的包以及子包**,因此即使导入starter项目后,仍然**扫描不到对应的组件**
  2. 可以将**所有的组件封装在一个Configuration类**中,在这个Configuration类中**通过@Import导入starter中所有的组件**,此时**只需要通过@Import导入这个Configuration类**就可以导入starter所需要的所有组件,从而能够正常运行服务。
  3. 此时只需要在使用服务的地方,通过@Import导入相关的Configuration类,就可以正常使用starter相关的服务。

封装Enable注解

  1. 使用@Import注解导入对应的Configuration配置类,虽然可以正常使用starter相关的服务,但**使用者通常不清楚该Configuration的类名**,因此这种导入方式不实用
  2. 因此可以**封装相关的Enable注解**,starter中提供相关的Enable注解,**将@Import封装在Enable注解中**,Enable注解起名是简洁的,因此调用者可以很方便的进行添加。
  3. 因此只需要在启动类或配置文件中添加Enable注解,就会导入starter的相关组件,从而能够使用到相关的服务
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import(RobotAutoConfiguration.class)
public @interface EnableRobot {


}

通过SPI机制

  1. 封装Enable注解虽然已经很简化导入的流程,但是仍然需要添加相关的注解
  2. 可以通过SPI自动装配机制实现自动导入实现类
  3. 需要在starter中创建**META-INF/spring.factories**文件,并且将对应的Configuration全类名配置上去
# springboot自动装配机制 会读取该配置 进行自动装配
org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.jokerku.autoconfigure.LogAutoConfigure
  1. 通过Condition相关注解判断是否加载相关文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 的 Starter 是一种约定俗的依赖包,它能够为开发者提供一种快速集某一类功能的方式。如果你需要自定义一个 Starter,可以按照以下步骤进行: 1. 定义一个 Maven 项目项目名称以 `spring-boot-starter-` 开头,例如 `spring-boot-starter-mybatis`。 2. 在项目中定义一个自动配置类,命名方式为 `XxxAutoConfiguration`,例如 `MybatisAutoConfiguration`。 3. 在 `META-INF` 目录下创建一个 `spring.factories` 文件,指定自动配置类: ``` org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.example.mybatis.autoconfig.MybatisAutoConfiguration ``` 4. 在项目中定义一个 Starter Starter 类,命名方式为 `XxxStarter`,例如 `MybatisStarter`,该类中可以提供一些公共的依赖和配置。 5. 打包发布到 Maven 仓库,供其他项目使用。 使用自定义 Starter 的步骤如下: 1. 在项目中添加依赖,例如: ``` <dependency> <groupId>com.example</groupId> <artifactId>spring-boot-starter-mybatis</artifactId> <version>1.0.0</version> </dependency> ``` 2. 在配置文件中配置相关属性,例如: ``` mybatis.mapper-locations=classpath*:mapper/*.xml mybatis.type-aliases-package=com.example.model ``` 3. 在代码中使用相关组件,例如: ``` @Autowired private SqlSessionTemplate sqlSessionTemplate; ``` 通过自定义 Starter,我们可以将一些常见的依赖和配置进行封装,提供给其他项目使用,大大简化了项目的开发和配置工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值