springBoot学习笔记自定义starter
Posted 拐柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot学习笔记自定义starter相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章