自定义Stater

8次阅读

共计 2251 个字符,预计需要花费 6 分钟才能阅读完成。

2.3 自定义 Stater
SpringBoot starter 机制
​ SpringBoot 由众多 Starter 组成(一系列的自动化配置的 starter 插件),SpringBoot 之所以流行,也是因为 starter。
starter 是 SpringBoot 非常重要的一部分,可以理解为一个可拔插式的插件,正是这些 starter 使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由 Spring Boot 自动通过 classpath 路径下的类发现需要的 Bean,并织入相应的 Bean。
例如,你想使用 Reids 插件,那么可以使用 spring-boot-starter-redis;如果想使用 MongoDB,可以使用 spring-boot-starter-data-mongodb
为什么要自定义 starter
开发过程中,经常会有一些独立于业务之外的配置模块。如果我们将这些可独立于业务代码之外的功能配置模块封装成一个个 starter,复用的时候只需要将其在 pom 中引用依赖即可,SpringBoot 为我们完成自动装配
自定义 starter 的命名规则
SpringBoot 提供的 starter 以 spring-boot-starter-xxx 的方式命名的。官方建议自定义的 starter 使用 xxx-spring-boot-starter 命名规则。以区分 SpringBoot 生态提供的 starter
整个过程分为两部分:

自定义 starter

使用 starter

首先,先完成自定义 starter
(1)新建 maven jar 工程,工程名为 zdy-spring-boot-starter,导入依赖:

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-autoconfigure</artifactId>

<version>2.2.2.RELEASE</version>

</dependency>

</dependencies>
12345678910111213141516171819
(2)编写 javaBean

@EnableConfigurationProperties(SimpleBean.class)

@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 +

”’ +

            '}';

}

}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
(3)编写配置类 MyAutoConfiguration

@Configuration

@ConditionalOnClass //@ConditionalOnClass:当类路径 classpath 下有指定的类的情况下进行自动配置

public class MyAutoConfiguration {

static {

System.out.println(“MyAutoConfiguration init….”);

}





@Bean

public SimpleBean simpleBean(){

return new SimpleBean();

}


}
12345678910111213141516171819202122232425262728293031323334353637
(4)resources 下创建 /META-INF/spring.factories
注意:META-INF 是自己手动创建的目录,spring.factories 也是手动创建的文件, 在该文件中配置自己的自动配置类

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\

com.lagou.config.MyAutoConfiguration

12345
使用自定义 starter
(1)导入自定义 starter 的依赖

<dependency>

<groupId>com.lagou</groupId>

<artifactId>zdy-spring-boot-starter</artifactId>

<version>1.0-SNAPSHOT</version>

</dependency>
123456789101112131415
学习让人快乐,学习更让人觉得无知!学了 1 个多月的《Java 工程师高薪训练营》,才发现自己对每个技术点的认知都很肤浅,根本深不下去,立个 Flag:每天坚持学习一小时,一周回答网上 3 个技术问题,把自己知道都分享出来。

正文完
 0