springBoot学习笔记自定义starter

Posted 拐柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot学习笔记自定义starter相关的知识,希望对你有一定的参考价值。

自定义starter

starter机制
SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进
starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。
SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景的spring-boot-starter依赖模块。所有这些依赖模块都遵循着约定成俗的默认配置,并允许我们调整这些配置,即遵循“约定大于配置”的理念。
简而言之,starter就是一个外部的项目,我们需要使用它的时候就可以在当前springboot项目中引入它。

自定义zdy-spring-boot-starter

自定义starter,同时进行热插拔实现。
pom.xml

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

编写simpleBean

@EnableConfigurationProperties
@ConfigurationProperties(prefix = "simplebean")
public class SimpleBean {
	private int id;
	private String name;

	public int getId() {
		return id;
	}

	public void setId(int 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 + '\\'' +
				'}';
	}
}

MyAutoConfiguration

@Configuration
@ConditionalOnBean(ConfigMarker.class)
public class MyAutoConfiguration {
	static {
		System.out.println("MyAutoConfiguration init....");
	}

	@Bean
	public SimpleBean simpleBean() {
		return new SimpleBean();
	}
}

注解EnableRegisterServer

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({ConfigMarker.class})
public @interface EnableRegisterServer {
}

配置标记类ConfigMarker


public class ConfigMarker {
}

创建/META-INF/spring.factories

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

结果展示

查看效果,我们只需要在别的项目中引入之前自定义starter的依赖,全局配置文件中配置数据,如果我们需要该starter的时候,在启动类上添加我们自定义好的注解,如果不需要的时候,则不添加注解,即可实现热插拔。

pom.xml

	<dependency>
			<groupId>com.lagou</groupId>
			<artifactId>zdy-spring-boot-starter</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>

自动类

@SpringBootApplication
@EnableRegisterServer
public class SpringBootMytestApplication {

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

以上是关于springBoot学习笔记自定义starter的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 学习笔记心得自定义Starter启动器

小代学Spring Boot之自定义Starter

springboot笔记七自定义场景启动器starter

SpringBoot学习 - 自定义starter

SpringBoot核心-自定义starter

SpringBoot系列之自定义starter实践教程