介绍

SpringBoot在配置上相比Spring要简单许多, 其核心在于spring-boot-starter。
在使用SpringBoot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配置。
starter简单来讲就是引入了一些相关依赖和一些初始化的配置。

SpringBoot官方提供了很多starter,第三方也可以定义starter。为了加以区分,starter从名称上进行了如下规范:

  • SpringBoot官方提供的starter名称为:spring-boot-starter-xxx

    例如Spring官方提供的spring-boot-starter-web
    
  • 第三方提供的starter名称为:xxx-spring-boot-starter

    例如由mybatis提供的mybatis-spring-boot-starter
    

自定义starter

开发starter

1.创建starter工程hello-spring-boot-starter并配置pom.xml文件

       <artifactId>hello-spring-boot-starter</artifactId>
       <version>1.0-SNAPSHOT</version>

......略

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

2.创建配置属性类

@Data
@ConfigurationProperties(prefix = "hello")
public class HelloProperties {
    private String name;
}

3.创建服务类

public class HelloService {
    private String name;

    public HelloService(String name) {
        this.name = name;
    }

    public String sayHello(){
        return "hello " + name + "!";
    }
}

4.创建自动配置类HelloServiceAutoConfiguration

@Configuration
@EnableConfigurationProperties(HelloProperties.class)
public class HelloServiceAutoConfiguration {
    private HelloProperties helloProperties;

    public HelloServiceAutoConfiguration(HelloProperties helloProperties) {
        this.helloProperties = helloProperties;
    }

    @Bean
    @ConditionalOnMissingBean
    public HelloService helloService(){
        return new HelloService(helloProperties.getName());
    }
}

5.在resources目录下创建META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
site.milanchen.config.HelloServiceAutoConfiguration

至此starter已经开发完成了,可以将当前starter安装到本地maven仓库供其他应用来使用。

使用starter

1.配置pom.xml文件

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--导入自定义starter-->
        <dependency>
            <groupId>cn.pf</groupId>
            <artifactId>hello-spring-boot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

2.创建application.yml文件

server:
  port: 8080
hello:
  name: world

3.创建HelloController

@RestController
@RequestMapping("/hello")
public class HelloController {
    // HelloService在我们自定义的starter中已经完成了自动配置,所以此处可以直接注入
    @Autowired
    private HelloService helloService;

    @GetMapping("/say")
    public String sayHello(){
        return helloService.sayHello();
    }
}
Last modification:September 25, 2021
如果觉得我的文章对你有用,请随意赞赏