首页 > 其他分享 >自定义实现SpringBoot Starter

自定义实现SpringBoot Starter

时间:2023-04-26 11:13:24浏览次数:35  
标签:SpringBoot 自定义 spring helloWorld Bean public Starter

在日常的开发中,会将开发的公共jar包发布的仓库,这样可以实现代码的复用。这里介绍的是自定义SpringBoot Starter的方式,对于采用SpringBoot开发的项目来说,引入和使用非常的方便。

1、SpringBoot Starter介绍

SpringBoot和Spring相比,在配置上简化了很多,核心就是因为Starter引入了一些需要的依赖和初始化的配置,从而实现开箱即用的效果。Starter其实干了两件事,一件是起步依赖,一件是自动装配,前者让将我们需要的依赖整合到一起,后者将我们需要的Bean自动的注入到了Spring容器。Starter的自动装配需要其实是扫描jar下的MATE-INF/spring.factories文件中的配置。

2、依赖引入

引入spring-boot-starter依赖,里面已经包含了spring-boot-autoconfigure依赖,然后引入一下自己开发需要的依赖。

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

3、开发实现

自行实现逻辑,一般采用构造器注入的方式,如下简单例子,HelloService采用构造器的方式注入依赖的HelloWorld:

public class HelloWorld {
    public void sayHelloWorld() {
        System.out.println("hello world");
    }
}
public class HelloService {

    private HelloWorld helloWorld;

    public HelloService() {

    }

    public HelloService(HelloWorld helloWorld) {
        this.helloWorld = helloWorld;
    }

    public void sayHello() {
        helloWorld.sayHelloWorld();
    }
}

4、编写配置类

新建一个autoconfig文件夹,然后新建一个配置类,搭配@Configuration和@Bean注入实例,然后搭配@Condition控制Bean的注入条件,如下:

@ConditionalOnProperty(prefix = "demo", name = "say", havingValue = "hello")
@Configuration
public class DemoConfig {

    @Bean
    public HelloWorld helloWorld() {
        return new HelloWorld();
    }

    @Bean
    public HelloService helloService() {
        System.out.println("helloService bean success");
        return new HelloService(helloWorld());
    }
}

5、@Condition系列注解

org.springframework.boot.autoconfigure.condition包路径下,存在如下很多注解,大部分注解都是见名知意,例如:

@ConditionalOnBean表示当前上下文存在指定Bean时,才实例化Bean

@ConditionalOnClass表示classPath存在指定类时,才实例化Bean,其他不再赘述,可以查看注解上的注释。

6、创建spring.factories文件

spring.factories中的配置如下,指定@Configuration所在的配置类:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.example.autoconfig.DemoConfig

7、打包发布

可以发布到本地Maven仓库给其他项目引用,也可以发布到公司私服,给其他人引用,或者将打包的jar给出去,采用引入本地jar的方式使用。

标签:SpringBoot,自定义,spring,helloWorld,Bean,public,Starter
From: https://www.cnblogs.com/zhaodalei/p/17250975.html

相关文章

  • go之logrus自定义日志样式
    日志功能配置:logrus.gopackagecoreimport("bytes""fmt""github.com/sirupsen/logrus""io""os""path")const(red=31yellow=33blue=36gray......
  • SpringBoot的自动装配原理
    前言因为最近在准备知识框架的学习,对springboot的自动装配原理学习了一番,也看了一些视频和一些博客,根据自己的理解在此记录一下,有什么理解得不对的,可以指出一起讨论。本文主要根据以下的几个点对自动装配原理进行介绍:什么是springboot的自动装配springboot的自......
  • SpringBoot 第一个demo
    前奏最近在面试,有一家公司在谈的时候,发了一份后端笔试题给我,是java的......我TMD是个运维诶,你给我一套SRE题不行嘛......玛德现在都这么卷了吗,SRE要去卷java啦...... SpringBoot对于Java的很多东西我并不懂,但是我知道写java的后端都会用到Spring全家桶,包括SpringBoot、Spri......
  • SpringBoot项目使用Junit进行单元测试
    SpringBoot项目使用Junit进行单元测试环境:Springboot2.6.7POM.xml文件添加如下内容:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency>&l......
  • django admin 中对自定义字段进行搜索
    我想在djangoadmin中使用investment字段进行搜索,但总是得到Cannotresolvekeyword'investment'intofield.选项是Model字段。有什么方法可以使用investment字段进行搜索?fromdjango.db.modelsimportCountclassReportsAdmin(admin.ModelAdmin):definvestmen......
  • springboot自动装配大概原理
    自动装配:pom.xmlspring-boot-dependence:核心都依赖在父类工程中!我们在写入或者引入springboot依赖的时候,不需要指定版,因为有这些仓库的版本启动器:------springboot的启动场景比如spring-boot-starter-web,他就会帮我们导入web环境苏需要的依赖。springboot会将所有的功能......
  • Springboot 在linux后台运行的方法
    1、后台运行程序nohupjava-jar自己的springboot项目.jar>日志文件名.log2>&1&命令详解:nohup:不挂断地运行命令,退出帐户之后继续运行相应的进程。>日志文件名.log:是nohup把command的输出重定向到当前目录的指定的“日志文件名.log”文件中,即输出内容不打印到屏幕上,而......
  • Springboot日期注解失败:while it seems to fit format ‘yyyy-MM-dd‘T‘HH:mm:ss.SSS
    提交字符串到后台映射为Date类型可以加上@DateTimeFormat(pattern="yyyy-MM-ddHH:mm:ss")注解,但是报错了!前端提交字符串到后台,出现如下错误:whileitseemstofitformat'yyyy-MM-dd'T'HH:mm:ss.SSSZ',parsingfails(leniency?null))错误的大致意思就是字符串映射到Da......
  • 使用Dockerfile部署springboot打包jar包
    1、docker下载JDK1.8镜像dockerpulljava:82、编写Dockerfile文件#依赖的父镜像FROMjava:8#作者MAINTAINERdocker-admin#jar包添加到镜像中ADDxxl-job-admin-2.1.2.jarxxl-job-admin.jar#容器暴露的端口即jar程序在容器中运行的端口EXPOSE8080#容器启动之后......
  • java面试题--springboot
    一、SpringBoot自动装配原理是什么?@SpringBootApplication@EnableAutoConfigration\@SpringBootConfigration\@ComponentScan@AutoConfigrationPackage\@ImportMETA-INF\spring.factories二、说一下@Configuration中的属性proxyBeanMethods的作用?首先,引入两个概念:Full全......