首页 > 其他分享 >Spring Boot中starter的原理是什么?如何实现一些starter?

Spring Boot中starter的原理是什么?如何实现一些starter?

时间:2023-05-31 14:57:50浏览次数:42  
标签:Spring Boot class public host RedisProperties port starter

原理:核心就是@EnableAutoConfiguration注解,在该注解中有一个@Import注解。@Import注解导入了配置类:AutoConfigurationImportSelector.class。在该类中使用SpringFactoriesLoader.class加载配置文件META-INF/spring.factories。

实现也starter需要实现一下步骤:

  1. autoconfigure模块
  2. 实现RedisAutoConfiguration.class
  3. 实现RedisProperties.class
  4. 实现配置文件META-INF/spring.factories
  5. 实现starter模块
    只需要在starter模块的pom文件中引入autoconfigure模块的依赖即可。

RedisAutoConfiguration.class

@Configuration
@EnableConfigurationProperties(RedisProperties.class)
public class RedisAutoConfiguration {
    @Bean
    @ConditionalOnMissingBean(name = "jedis")
    public Jedis jedis(RedisProperties redisProperties){
        System.out.println("RedisAutoConfiguraton...");
        return new Jedis(redisProperties.getHost(), redisProperties.getPort());
    }
}

RedisProperties.class

@ConfigurationProperties(prefix = "redis")
public class RedisProperties {
    private String host = "localhost";
    private int port = 6379;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }
}

META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.itheima.redis.config.RedisAutoConfiguration

标签:Spring,Boot,class,public,host,RedisProperties,port,starter
From: https://www.cnblogs.com/tyhA-nobody/p/17446045.html

相关文章

  • Spring AOP错误:org.springframework.beans.factory.BeanNotOfRequiredTypeException:
    org.springframework.beans.factory.BeanNotOfRequiredTypeException:Beannamed'myCalculator'isexpectedtobeoftype'com.mashibing.service.MyCalculator'butwasactuallyoftype'com.sun.proxy.$Proxy19'atorg.springframew......
  • 前端 React + vite + Typescript 后端 java + springmvc + jwt 跨域 解决方案
    首先后端配置跨域:web.xml文件: <!--配置跨域--><filter><filter-name>header</filter-name><filter-class>org.zhiyi.config.Cross</filter-class></filter><filter-mapping><......
  • 浅谈 Spring Bean 的生命周期
    一、Bean的生命周期概述区别于普通的Java对象需要通过new创建对象,Spring的Bean由IoC容器进行实例化、组装以及管理的。也就是说 Bean的生命周期完全由IoC容器控制。Spring容器只能管理 单例(singleton) 作用域的Bean的完整生命周期,对于 原型(prototype) 作用域......
  • SpringBoot 设置HTTP Status Code
    1HTTPStatusCodeHTTP请求响应的内容有很多,包括Body、Cookies、Headers和Status。我们最常用的是Body、其次Headers、Cookies。而HTTPStatusCode关注得最少。1.1HTTPStatusCode分类分类描述1**信息,服务器收到请求,需要请求者继续执行操作2**成功,操作被成功接......
  • springboot2到spring3的升级变化
    1.自动配置的变化springboot2引入依赖后不需要手动配置属性文件,spingboot3引入依赖后还需手动配置属性文件比如当我使用springboot3.1.0版本加入mybatis依赖生成springboo项目后,在pom文件加入druid连接池包的依赖,发现不管加哪个版本的druid,在接口访问数据库时一直用的还是sping......
  • java springboot 项目中静态资源无法访问的问题
    默认resource/static目录下的静态html文件无法访问,需要配置。您可以在SpringBoot的配置类中添加以下内容来手动配置静态资源目录:@ConfigurationpublicclassWebMvcConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddResourceHandlers(ResourceHan......
  • SpringBoot定义优雅全局统一Restful API 响应框架五
    闲话不多说,继续优化全局统一RestfulAPI响应框架做到项目通用接口可扩展。如果没有看前面几篇文章请先看前面几篇SpringBoot定义优雅全局统一RestfulAPI响应框架SpringBoot定义优雅全局统一RestfulAPI响应框架二SpringBoot定义优雅全局统一RestfulAPI响应框架三Sp......
  • 阿里云验证码短信功能---SpringBoot项目
    阿里云官网:https://www.aliyun.com/activity/2023caigouji/shangyuncaigouji?utm_content=se_1013408957准备工作注册阿里云账号申请AccessKeyID和AccessKeySecret搜索“短信服务SMS”,选择“免费开通”即可选择国内消息,申请签名管理和模板管理准备完成后我们可以获取Access......
  • Spring:Formatter 和 ConversionService 的区别?
    在Spring框架中,Formatter和ConversionService是两个独立的概念,并没有直接的继承关系。Formatter接口和ConversionService接口是在不同的包中定义的,它们有着不同的目的和功能。Formatter接口位于org.springframework.format包中,用于格式化和解析字段值,并提供了本地化、格式化选项......
  • SpringBoot项目中使用拦截器进行请求的拦截
    在没有拦截器拦截前端请求的情况下,即使用户不进行登录,却依然能够进入系统。这显然是不合理的。这里使用拦截器对其请求进行一个拦截并且过滤。将那些需要需要用户登录才能够展示的界面进行一个拦截,如果用户没有登录,就需要跳转到登录界面进行登录。没有拦截器的效果展示此时我们......