SpringBoot自定义Starter实现流程详解

 更新时间:2022年09月27日 08:58:46   作者:CaptainCats  
SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰

starter起步依赖

starter起步依赖是springboot一种非常重要的机制,

它打包了某些场景下需要用到依赖,将其统一集成到starter,

比如,

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

这就是一个starter,你可以把它看做一个外部外部项目,注意:是外部项目。

starter命名规则

springboot提供的starter以spring-boot-starter-x的方式命名,

自定义starter以x-spring-boot-starter的方式命名,

以区分springboot生态提供的starter。

自定义starter

new module

mystarter-spring-boot-starter

maven项目

添加依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-autoconfigure</artifactId>
	<version>2.2.9.RELEASE</version>
</dependency>

load maven changes

simplebean

package com.duohoob.bean;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
 * 这两个都是非@Component注解,
 * 否则springboot启动时会直接被加载进spring容器
 */
@EnableAutoConfiguration
@ConfigurationProperties(prefix = "simplebean")
public class SimpleBean {
	private String id;
	private String name;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "SimpleBean{" +
				"id='" + id + '\'' +
				", name='" + name + '\'' +
				'}';
	}
}

自动配置类

package com.duohoob.config;
import com.duohoob.bean.SimpleBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyAutoConfiguration {
	@Bean
	public SimpleBean simpleBean() {
		return new SimpleBean();
	}
}

META-INF\spring.factories

在resources下创建META-INF\spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.duohoob.config.MyAutoConfiguration

在spring-boot-mytest中引入mystarter-spring-boot-starter

<dependency>
	<groupId>com.duohoob</groupId>
	<artifactId>mystarter-spring-boot-starter</artifactId>
	<version>1.0-SNAPSHOT</version>
</dependency>

load maven changes

添加配置

在spring-boot-mytest的src/main/resources/application.properties中添加配置

通过@Autowired引用

package com.duohoob.springbootmytest.controller;
import com.duohoob.bean.SimpleBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
	@Autowired
	private SimpleBean simplebean;
	@RequestMapping("/test")
	public String test() {
		return simplebean.toString();
	}
}

启动访问

到此这篇关于SpringBoot自定义Starter实现流程详解的文章就介绍到这了,更多相关SpringBoot自定义Starter内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring AOP与AspectJ的对比及应用详解

    Spring AOP与AspectJ的对比及应用详解

    这篇文章主要为大家介绍了Spring AOP与AspectJ的对比及应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • springboot获取真实ip地址的方法实例

    springboot获取真实ip地址的方法实例

    在使用springboot时,需要获取访问客户端的IP地址,所以下面这篇文章主要给大家介绍了关于springboot获取真实ip地址的相关资料,需要的朋友可以参考下
    2022-06-06
  • Java ExecutorService四种线程池使用详解

    Java ExecutorService四种线程池使用详解

    这篇文章主要介绍了Java ExecutorService四种线程池使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • SpringCloud整合分布式服务跟踪zipkin的实现

    SpringCloud整合分布式服务跟踪zipkin的实现

    这篇文章主要介绍了SpringCloud整合分布式服务跟踪zipkin的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 解决mybatisPlus null 值更新的问题

    解决mybatisPlus null 值更新的问题

    这篇文章主要介绍了解决mybatisPlus null 值更新的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring Kafka中如何通过参数配置解决超时问题详解

    Spring Kafka中如何通过参数配置解决超时问题详解

    这篇文章主要给大家介绍了关于Spring Kafka中如何通过参数配置解决超时问题的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Java实现多选批量删除功能(vue+Element)

    Java实现多选批量删除功能(vue+Element)

    这篇文章主要为大家详细介绍了Java实现多选批量删除功能,包括前端vue实现代码文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • MyBatis学习教程(五)-实现关联表查询方法详解

    MyBatis学习教程(五)-实现关联表查询方法详解

    本文给大家介绍mybatis关联查询,包括一对一关联查询,一对多关联查询,代码简单易懂,感兴趣的朋友一起学习吧
    2016-05-05
  • Java 类加载过程与类加载器详细介绍

    Java 类加载过程与类加载器详细介绍

    这篇文章主要介绍了Java 类加载过程与类加载器详细介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • SpringBoot整合Web之AOP配置详解

    SpringBoot整合Web之AOP配置详解

    面向切面编程(aspect-oriented programming,AOP)主要实现的目的是针对业务处理过程中的切面进行提取,诸如日志、事务管理和安全这样的系统服务,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
    2022-08-08

最新评论