SpringBoot starter机制

1、出现的背景

在spring boot之前,想要在spring中集成redis,需要做的事情包括:

(1)引入jar包:包括redis的jar包,redis依赖的jar包,相应的版本,与spring版本是否兼容等

(2)在配置文件中配置连接地址、端口号等

(3)以Jedis为例,增加增加JedisConnectionFactory、RedisTemplate 的bean初始化代码

(4)使用RedisTemplate

可以看到,集成过程比较复杂,而这些过程跟业务开发没有任何关系。

是否可以简化这些三方框架的集成步骤呢,于是starter机制应运而生。

2、SpingBoot starter 是什么

SpringBoot starter 是一种简化三方框架集成的技术。

简化了jar包管理、配置、以及bean的初始化过程。

3、SpingBoot starter 实现原理

3.1 jar包管理优化

如下图所示,starter对依赖jar包及版本的管理,本质是使用pom的继承能力,把starter依赖的jar包提前在pom文件中定好,使用的时候只要引用对应的pom文件即可。

3.2 为什么引入pom文件后bean会自动加载?

本质上是通过spring boot自动加载配置实现的。

(1)starter对应的jar包中,配置starter的配置拓展类:

文件:src/main/resources/META-INF/spring.factories 

配置:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.my.starter.MyAutoConfiguration

代码示例:

@Configuration
   @ConditionalOnClass(MyService.class)
   public class MyAutoConfiguration {

       @Bean
       @ConditionalOnMissingBean
       public MyService myService() {
           return new MyServiceImpl();
       }
   }

(2)在spring boot中引入该starter的jar包

(3)spring boot 识别spring.factories 文件,找到MyAutoConfiguration进行初始化

(4)使用 MyService bean。

(5)ConditionalOnClass 是做个保护,只有当MyService存在时才加载该配置。

4、SpringBoot starter 使用示例

(1)在 pom.xml 文件中添加 spring-boot-starter-data-redis 依赖。

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

(2)在 application.properties 或 application.yml 文件中配置 Redis 连接信息。

spring:
  redis:
    host: localhost
    port: 6379

(3)使用redis:

@Autowired
private RedisTemplate<String, Object> redisTemplate;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值