项目中自定义 SpringBoot Starter

前言

作为一个有架构梦想的程序员,自定义 springboot-starter 是我们必须要掌握的技能。企业中很多项目都会有自己封装 starter 的需求。这也是我 2019 年底出去面试被问过的面试题,当时作为一个刚毕业半年的小白,只会用官方制作好的,的确没有自己去实现过。希望这篇文章能对还不会制作 starter 的同学有帮助~~

什么是 springboot-starter & 工作原理

我们都知道 SpringBoot 这么火的核心原因之一就是它提供了一系列的启动场景 starter ,这里面做好了各种开源组件的封装,引入依赖即可使用。可以回想一下我们项目中整合 Redis 用到的 RedisTemplate ,整合 RabbitMQ 用到的 RabbitTemplate 等,你有没有想过为什么在 application.yml 中配置一些属性就可以直接在程序中注入然后用这些模板类呢?

    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private RabbitTemplate rabbitTemplate;

其实原理还是比较容易理解的,以 RedisTemplate 自动配置为例,阅读 RedisAutoConfiguration 类的源码就会发现 ,简单来说就是源码中读取 application.yml 中的相关配置,将这些配置设置到 RedisTemplate 中,然后再将 RedisTemplate 对象注入到 Spring 容器。这样一来,我们需要用的时候,直接从 Spring 容器中拿就可以了。

使用 starter 的好处

以使用分布式任务调度框架 xxl-job 为例,我们参考官网的给的 demo ,首先要在配置文件中配置 address、ip、port 等属性,然后要写个配置类接受这些属性,设置到 XxlJobSpringExecutor 对象,然后再将 XxlJobSpringExecutor 对象注入到 Spring 容器中。

@Configuration
public class XxlJobConfig {

    @Value("${xxl.job.admin.addresses}") //读取配置文件中的值
    private String adminAddresses;
    /**
     * 注入其他属性省略...
     * */

    //注入 XxlJobSpringExecutor 到 Spring
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor executor = new XxlJobSpringExecutor();
        executor.setAdminAddresses(adminAddresses);
        executor.setAppname
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值