【SpringBoot框架篇】8.搭建自己的spring-boot-starter

文章目录

  • 简述
  • 创建starter服务
    • 引入构建starter的核心依赖
    • 创建配置类
    • 封装服务提供者
    • 注册Bean对象
    • 暴露需要被装配的类
    • 发布jar包到本地仓库
  • 引入我的my-spring-boot-starter依赖
    • 引入依赖
    • 测试接口
    • 修改配置文件
    • 启动程序
  • 项目配套代码

简述

我们可以认为starter是一种服务,在使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动注入的bean。

我们在开发springboot项目的时候,经常会引用spring-boot-starter-web,spring-boot-starter-data-jpa等一些常用的依赖,我们也可以自己封装一个服务,然后再需要用的项目中引入依赖即可使用.

创建starter服务

首先先创建一个Maven项目

引入构建starter的核心依赖

 
        2.3.0.RELEASE
        1.7.25
    

    
        
            org.springframework.boot
            spring-boot-autoconfigure
            ${srping.boot.version}
        

        
            org.springframework.boot
            spring-boot
            ${srping.boot.version}
            true
        

        
            org.springframework.boot
            spring-boot-configuration-processor
            ${srping.boot.version}
        

        
            org.slf4j
            slf4j-api
            ${slf4j.version}
        
    

创建配置类

通过@ConfigurationProperties注解绑定前缀是my.db得属性

@ConfigurationProperties(prefix = "my.db")
public class DbConfig {
    private String username;
    private String password;
    //省略get,set方法
}

封装服务提供者

该类只有一个toString方法输出属性信息

public class DbServer {

    private String username;
    private String password;
    //省略get,set方法
 	@Override
    public String toString(){
        return "DbServer{username=" + username + " ,password=" + password + "}";
    }

注册Bean对象

下面代码通关EnableConfigurationProperties注入了DbConfig对象,然后把属性赋值给了
DbServer对象,最后调用了print打印方法.

@Configuration
@EnableConfigurationProperties(DbConfig.class)
public class DbAutoConfiguration {
    Logger logger= LoggerFactory.getLogger(this.getClass());
    @Bean
    public DbServer getBean(DbConfig dbConfig) {
        //创建组件实例
        logger.info("开始注册我的Bean对象");
        DbServer dbServer = new DbServer();
        dbServer.setUsername(dbConfig.getUsername());
        dbServer.setPassword(dbConfig.getPassword());
        return dbServer;
    }
}

暴露需要被装配的类

在resources目录下新建META-INF/spring.factories文件
在这里插入图片描述
2行添加需要暴露的类的名称(包含包名)

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ljm.boot.starter.config.DbAutoConfiguration

该文件会被 @SpringBootApplication注解中会下面被扫描并加载.

  • @SpringBootApplication
    • @EnableAutoConfiguration
      • @Import({AutoConfigurationImportSelector.class})
        • getCandidateConfigurations()
          • loadFactoryNames() 中被扫描到并加载
            【SpringBoot框架篇】8.搭建自己的spring-boot-starter_第1张图片

发布jar包到本地仓库

在程序的跟路径执行

mvn clean install

看到下面的SUCCESS就代表发布成功了
在这里插入图片描述

引入我的my-spring-boot-starter依赖

创建一个springboot项目,然后引入刚发布的jar包

引入依赖


      com.ljm.boot
      my-spring-boot-starter
      v1.0

测试接口

@RestController
public class TestController {

    @Autowired
    DbServer dbServer;

    @RequestMapping("/test")
    public String test(){
        return dbServer.toString();
    }
}

修改配置文件

my:
  db:
    username: test
    password: 123456
server:
  port: 8008

由于我们在DbConfig中声明过这2个属性,所以在yml文件中能通过提示补齐属性
【SpringBoot框架篇】8.搭建自己的spring-boot-starter_第2张图片

启动程序

能够看到控制台输出了my-spring-boot-starter依赖中的 ‘开始注册我的Bean对象‘ log信息.,
重下面日志信息打印中可以看到我们创建的starter中注册bean的类是EnhancerBySpringCGLIB动态代理生成的。
在这里插入图片描述
测试接口
可以看到接口也正常的返回了注入bean对象的属性信息
在这里插入图片描述

项目配套代码

github地址
要是觉得我写的对你有点帮助的话,麻烦在github上帮我点 Star

【SpringBoot框架篇】其它文章如下,后续会继续更新。

  • 1.搭建第一个springboot项目
  • 2.Thymeleaf模板引擎实战
  • 3.优化代码,让代码更简洁高效
  • 4.集成jta-atomikos实现分布式事务
  • 5.分布式锁的实现方式
  • 6.docker部署,并挂载配置文件到宿主机上面
  • 7.项目发布到生产环境
  • 8.搭建自己的spring-boot-starter
  • 9.dobbo入门实战
  • 10.API接口限流实战
  • 11.Spring Data Jpa实战
  • 12.使用druid的monitor工具查看sql执行性能
  • 13.使用springboot admin对springboot应用进行监控
  • 14.mybatis-plus实战

你可能感兴趣的:(springBoot)