服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - springboot自定义starter启动器的具体使用实践

springboot自定义starter启动器的具体使用实践

2021-12-18 14:23诗水人间 Java教程

本文主要介绍了springboot自定义starter启动器的具体使用实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

第一步、创建 xxx-spring-boot-starter 的spring Initializr模块

springboot自定义starter启动器的具体使用实践

springboot自定义starter启动器的具体使用实践

springboot自定义starter启动器的具体使用实践

springboot自定义starter启动器的具体使用实践

 

第二步、删除不需要的内容(启动类、除下面spring-boot-starter的其它依赖,maven编译插件)

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

如下是完整的pom.xml
实际上如果当前starter需要引用其它依赖加入到dependences里面即可,这里只做演示项目

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.3.4.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>top.huashengshu</groupId>
  <artifactId>my-spring-boot-starter</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>my-spring-boot-starter</name>
  <description>Demo project for Spring Boot</description>

  <properties>
      <java.version>11</java.version>
  </properties>

  <dependencies>
      <!--   保留这个依赖即可,其它依赖都删除     -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter</artifactId>
      </dependency>

  </dependencies>
</project>

项目结构截图

springboot自定义starter启动器的具体使用实践

 

第三步、写代码,对外提供一些自己写的类

创建HelloProperties.java,直接复制下面代码,然后选择包进行粘贴,Idea会自动创建对应类代码设置好包名

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "hello") // 对外提供的前缀,相当于其它引入当前starter在properties文件使用hello.属性即可对下面属性进行赋值
public class HelloProperties {

  private String prefix; // 成员属性,意思是前缀名
  private String suffix; // 成员属性,意思是后缀名

  public String getPrefix() {
      return prefix;
  }

  public void setPrefix(String prefix) {
      this.prefix = prefix;
  }

  public String getSuffix() {
      return suffix;
  }

  public void setSuffix(String suffix) {
      this.suffix = suffix;
  }
}

创建HelloService.java直接复制下面代码,选择包进行粘贴即可生成

public class HelloService {

  HelloProperties helloProperties;

  public HelloProperties getHelloProperties() {
      return helloProperties;
  }

  public void setHelloProperties(HelloProperties helloProperties) {
      this.helloProperties = helloProperties;
  }

  public String sayHello(String name){
      return helloProperties.getPrefix() +" "+name +" "+helloProperties.getSuffix();
  }
}

创建配置类(和前面一样复制粘贴即可)HelloServiceAutoConfiguration.java,将HelloService注入到IOC容器中

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConditionalOnWebApplication    // 条件配置类,该注解表示在web环境下才生效,相关的其它条件可以使用@ConditionXXX
@EnableConfigurationProperties(HelloProperties.class) // 表示HelloProperties作为配置类使用
public class HelloServiceAutoConfiguration {

  @Autowired
  HelloProperties helloProperties;	// 作为配置类目的就是想在sayHello方法返会的字符串加上前缀和后缀

  @Bean
  public HelloService helloService() { // 将HelloService注入到IOC容器
      HelloService service = new HelloService();
      service.setHelloProperties(helloProperties);
      return service;
  }
}

 

第四步、在resources资源文件夹下创建一个META-INF文件夹,并创建一个spring.factories文件

如下面截图

springboot自定义starter启动器的具体使用实践

内容则是将@Configuration配置类加入,目的是将配置加入到外部的IOC容器中

org.springframework.boot.autoconfigure.EnableAutoConfiguration=

idea中右键copyC》copy reference,将复制的值填入上面=右边

注意:如果有多个AutoConfiguration则用逗号分开,还有回车小心前面的空格,最好没有其它字符。

springboot自定义starter启动器的具体使用实践

例如:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
top.huashengshu.myspringbootstarter.HelloServiceAutoConfiguration,\
top.yumbo.music.starter.configuration.YumboMusicAutoConfiguration

 

第五步、将该项目发布的maven仓库,或者安装到本地仓库中让其它项目能使用的到

本地安装为例:

springboot自定义starter启动器的具体使用实践

成功后即可

springboot自定义starter启动器的具体使用实践

 

第六步、测试自己定义的启动器使用有效

创建一个springboot项目
勾选web模块即可,然后加入自定义启动器的gav依赖
在启动类中加入内部类(这里为了方便演示不按照规范创建包)
如下示例代码

启动类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import top.huashengshu.myspringbootstarter.HelloService;

@SpringBootApplication
public class DemoApplication {
	
  @RestController
  public class HelloController {

      @Autowired
      HelloService helloService; // 注入HelloService

      @GetMapping("/hello") // 暴露一个/hello 请求路径对外提供服务
      public String hello(){
          return helloService.sayHello("zhang san"); // 返回带有前缀和后缀中间是 "zhang san"的字符串
      }

  }
  public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
  }

}

properties文件

因为使用了@ConfigurationProperties(prefix = "hello")注解所以在当前项目的properties文件中使用hello前缀调用即可对成员属性赋值

springboot自定义starter启动器的具体使用实践

如下

hello.prefix=HUASHENGSHU
hello.suffix=Hello World

运行当前项目,访问/hello验证是否有效

如下:

springboot自定义starter启动器的具体使用实践

说明自定义starter成功。

其它业务代码,根据自己的需求自己加入依赖,也就是说可以自己定义starter提供给其它人用!

到此这篇关于springboot自定义starter启动器的具体使用实践的文章就介绍到这了,更多相关springboot自定义starter启动器内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_41813208/article/details/109139783

延伸 · 阅读

精彩推荐
  • Java教程升级IDEA后Lombok不能使用的解决方法

    升级IDEA后Lombok不能使用的解决方法

    最近看到提示IDEA提示升级,寻思已经有好久没有升过级了。升级完毕重启之后,突然发现好多错误,本文就来介绍一下如何解决,感兴趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代码

    小米推送Java代码

    今天小编就为大家分享一篇关于小米推送Java代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    富贵稳中求8032021-07-12
  • Java教程Java实现抢红包功能

    Java实现抢红包功能

    这篇文章主要为大家详细介绍了Java实现抢红包功能,采用多线程模拟多人同时抢红包,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一个注意事项

    Java8中Stream使用的一个注意事项

    最近在工作中发现了对于集合操作转换的神器,java8新特性 stream,但在使用中遇到了一个非常重要的注意点,所以这篇文章主要给大家介绍了关于Java8中S...

    阿杜7482021-02-04
  • Java教程xml与Java对象的转换详解

    xml与Java对象的转换详解

    这篇文章主要介绍了xml与Java对象的转换详解的相关资料,需要的朋友可以参考下...

    Java教程网2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    这篇文章主要介绍了Java使用SAX解析xml的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter写文件写不进去或缺失数据的解决

    Java BufferWriter写文件写不进去或缺失数据的解决

    这篇文章主要介绍了Java BufferWriter写文件写不进去或缺失数据的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望...

    spcoder14552021-10-18
  • Java教程20个非常实用的Java程序代码片段

    20个非常实用的Java程序代码片段

    这篇文章主要为大家分享了20个非常实用的Java程序片段,对java开发项目有所帮助,感兴趣的小伙伴们可以参考一下 ...

    lijiao5352020-04-06