如何实现自己的spring boot starter

前言

在使用spring boot开发的时候,我们有时候想要把自己的代码打包成类似spring-boot-starter-web的样式来导入到自己的中央仓库,然后其他项目就可以引用类似springboot那样的引用了,下面我们就实现一个类似的项目。

1.新建一个spring boot 项目,取名为mybootspringbootstarter,groupId和artifactId如下所示

<groupId>com.my.boot</groupId>
<artifactId>myboot-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version> 

这里需要注意的是为了区分springboot自己的jar,默认规则的话我们把自己的取名放在spring-boot-starter前面,如上面代码所示。

2.引入springboot相关jar包来做基础处理

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.1.3.RELEASE</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-autoconfigure</artifactId>
  <version>2.1.0.RELEASE</version>
</dependency>
<!--生成配置文件元数据结构-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <version>2.1.2.RELEASE</version>
</dependency> 

spring-boot-starter是核心包,必须添加。

3.添加一个可配置的properties类,用于可配置属性的加载

@ConfigurationProperties(prefix = "com.myboot")
public class MyBootProperties {
  /**
   * 名称
   */
  private String name;
  /**
   * 是否启用
   */
  private boolean enable;

....省略get/set方法
}

4.定义一个类来使用properties类的属性引用

public class MyService {
  /**
   * 名称
   */
  private String name;
  /**
   * 是否启用
   */
  private boolean enable;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public boolean isEnable() {
    return enable;
  }
  public void setEnable(boolean enable) {
    this.enable = enable;
  }
  public void print(){
    System.out.println("name:" + this.name + "----enable:" + this.enable);
  }
}

5.定义好以上类后,我们如何像bean一样使用呢?那么我们就需要把它定义为一个bean

@Configuration
@EnableConfigurationProperties(MyBootProperties.class)
public class MyBootAutoConfiguration {
  @Bean
  public MyService myService(MyBootProperties myBootProperties){
    MyService myService = new MyService();
    myService.setName(myBootProperties.getName());
    myService.setEnable(myBootProperties.isEnable());
    return myService;
  }
} 

6.怎么样才能在其他架构中引入我们定义的bean呢?我们需要在resources/META-INFO下定义spring.factories文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
 com.my.boot.configure.MyBootAutoConfiguration 

这个是spring的标准格式,spring的加载器会自动去寻找这个文件下的所有配置实现自动的注入。

通过以上步骤就完成了基本starter的搭建,最后通过maven clean install就可以生成一个jar了在仓库中,我们可以在另外的项目中像引入springboot相关的jar引入了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-08-21

spring boot 自定义starter的实现教程

spring boot 使用 starter 解决了很多配置问题, 但是, 他是怎么来解决这些问题的呢? 这里通过一个简单的例子, 来看一下, starter是怎么来设置默认配置的. 一. 建 starter 项目 自定义的starter, 项目命名规范是: 自定义名-spring-boot-starter 先来看一下, 我最后的目录结构 1. 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

Spring boot创建自定义starter的完整步骤

前言: Springboot的出现极大的简化了开发人员的配置,而这之中的一大利器便是springboot的starter,starter是springboot的核心组成部分,springboot官方同时也为开发人员封装了各种各样方便好用的starter模块,例如: spring-boot-starter-web//spring MVC相关 spring-boot-starter-aop //切面编程相关 spring-boot-starter-cache //缓存相关 starter的出现极大的

Spring Boot Starters简介及其优劣势

简介 在启动任何项目(无论是小型项目还是企业级应用程序)之前,其中关键的方面之一是依赖管理,手动为小型应用程序执行依赖管理并不是一项困难的工作,但对于复杂的应用程序,手动管理所有项目依赖并不理想,容易出现许多问题以及浪费时间,而这些时间可以用于项目的其他一些重要方面. Spring Boot背后的基本原理之一就是解决类似的问题.Spring Boot Starter是一套方便的依赖描述符,可以很容易地包含在任何级别的应用程序中.这些Starters作为Spring相关技术的引导过程,我们 不再需

深入浅析 Spring Boot Starter

Spring Boot 简介 Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西.因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置.Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置.如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置.另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序. 依赖管理是任何复杂项目的关键部

springboot自定义Starter的具体流程

自定义Starter命名规则 注意artifactId的命名规则,Spring官方Starter通常命名为spring-boot-starter-{name}如 spring-boot-starter-web, Spring官方建议非官方Starter命名应遵循{name}-spring-boot-starter的格式, 如mybatis-spring-boot-starter.这里创建的项目的artifactId为helloworld-spring-boot-starter 开发Starter

Spring Boot 自定义starter的示例代码

SpringBoot 个人感觉特点: 1)众多库的集合(各种Starter),方便快速构建应用系统. 2)自动配置spring(通过AutoConfiguration机制),简化配置,也方便扩展新的Starter. 3)内嵌web容器,无需WAR部署. 创建一个用maven构建的springboot项目 pom文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht

springboot手写一个自己的starter源码

springboot的最强大的就是那些xxxAutoconfiguration,但是这些xxxAutoConfiguration又依赖那些starter,只有导入了这些场景启动器(starter),我们很多自动配置类才能有用,并且还会新增一些功能,这次就来一起写个简单的starter,来看看内部到底是什么原理! 脑中大概有个印象:我们要用一个场景(比如web),直接导入下图所示的依赖,但是在jar包里面去看这个,你会发现里面只有一些基本的配置文件,什么类都没有,就能够想到这个一类就类似一个公司前

SpringBoot封装自己的Starter的实现方法

一.说明 我们在使用SpringBoot的时候常常要引入一些Starter,例如spring-boot-starter-web,官方为我们提供了几乎所有的默认配置,很好的降低了使用框架时的复杂度,所以在用xxx-starter的时候,可以不用费心去写一些繁琐的配置文件,即使必要的配置在application.properties或application.yml中配置就可以了,当你实现了一个Starter,可以在不同的项目中复用,非常方便,今天我们来编写自己的Starter以之前的短信业务为例.

SpringBoot自定义starter实例代码

一.简介 SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入SpringBoot 为我提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能.即使是这样,SpringBoot也不能囊括我们所有的使用场景,往往我们需要自定义starter,来简化我们对SpringBoot的使用. 下面话不多说了,来一起看看详细的介绍吧 二.如何自定义starter 1.实例 如何编写自动配置 ? 我们参照@WebMvcAutoConfigurati

深入浅析Spring-boot-starter常用依赖模块

Spring-boot的2大优点: 1.基于Spring框架的"约定优先于配置(COC)"理念以及最佳实践之路. 2.针对日常企业应用研发各种场景的Spring-boot-starter自动配置依赖模块,且"开箱即用"(约定spring-boot-starter- 作为命名前缀,都位于org.springframenwork.boot包或者命名空间下). 应用日志和spring-boot-starter-logging 常见的日志系统大致有:java.util默认提

浅析Spring Boot中的spring-boot-load模块

一.前言 正常情况下classloader只能找到jar里面当前目录或者文件类里面的*.class文件.为了能够加载嵌套jar里面的资源之前都是把嵌套jar里面的class文件和应用的class文件打包为一个jar,这样就不存在嵌套jar了,但是这样做就不能很清晰的知道应用到底依赖了哪些东西,哪些是应用自己的,另外多个jar里面的class可能内容不一样但是文件名却一样.springboot中spring-boot-loader就是为优雅解决这个问题而诞生的. spring-boot-loade

spring boot 的常用注解使用小结

@RestController和@RequestMapping注解 4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解.4.0之前的版本,Spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet.使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController. 当你实现一个RESTful web services的时候,response将一直通过response

详解Spring Boot配置排序依赖技巧

本文主要介绍了Spring Boot配置排序依赖技巧,分享给大家,具体如下: Spring Boot - 被错误使用的注解 我自己曾经在 Spring Boot 中集成通用 Mapper 时,写过下面的代码: @Configuration @AutoConfigureAfter(MyBatisConfig.class) public class MyBatisMapperScannerConfig { //其他 } 这种用法我参考的 mybatis-spring-boot-starter. 由于

spring boot starter actuator(健康监控)配置和使用教程

添加POM依赖: <!-- spring-boot-监控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.bo

详解spring boot starter redis配置文件

spring-boot-starter-Redis主要是通过配置RedisConnectionFactory中的相关参数去实现连接redis service. RedisConnectionFactory是一个接口,有如下4个具体的实现类,我们通常使用的是JedisConnectionFactory. 在spring boot的配置文件中redis的基本配置如下: # Redis服务器地址 spring.redis.host=192.168.0.58 # Redis服务器连接端口 spring.

spring boot项目导入依赖后代码报错问题的解决方法

代码截图如图所示(由于本人问题已经解决,没来得及截图,所以在网上找了一张图片) ​ 针对图中所示的情况,可参考一下解决方案: 方案一: 在 Idea 导入 Spring Boot 项目代码报红,试过更改maven配置,maven clean操作,执行-U idea:idea等命令还是提示:cannot resolve symbol 'SpringBootApplication' .我最终解决方法是导入要导入项目的pom.xml文件,而不是导入现有项目解决.选择pom.xml后会弹出提示框,选择a

Spring Boot企业常用的starter示例详解

SpringBoot简介# Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. Spring Boot让我们的Spring应用变的更轻量化.比如:你可以仅仅依靠一个Java类来运行一个Spring引用.你也可以打包你的应用为