starter是 springboot的翅膀,插上翅膀,就能飞得很高~

想飞的同学,跟着我,一步步 diy自己的 starter~

1.创建pom项目

创建一个pom项目,命名为 sayhello-spring-boot-starter,引入两个依赖,如图:

2. 创建 bean

SayHello.java

package bean;

public class SayHello {
    // 只有一个属性
    private String name;
    
    public void setName(String name){
        this.name = name;
    }
    // 最后输出的信息
    public String getMsg(){
        return name + "say hello~~";
    }
}

3. 创建properties类

SayHelloProperties.java

package properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
// 读取配置文件中 hello:name 的配置
@ConfigurationProperties(prefix = "hello")
public class SayHelloProperties {

    private String name;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

4. 创建自动配置类

MyAutoConfiguration.java

@Configuration
@ConditionalOnClass(SayHello.class)
@EnableConfigurationProperties(SayHelloProperties.class)
public class MyAutoConfiguration {

    @Autowired
    SayHelloProperties sayHelloProperties;

    @Bean
    @ConditionalOnMissingBean(SayHello.class)
    public SayHello getSayHiService(){
        SayHello sayHello = new SayHello();
        // 从配置文件里获取name, sayHello 这个bean初始化完成
        sayHello.setName(sayHelloProperties.getName());
        return sayHello;
    }
}
看过自动配置原理的那一章的话,这个代码看起来就很简单咯~

5. 创建 spring.factories

在 resources/META-INF 目录下,创建 spring.factories 文件,内容为自动配置类

spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration= MyAutoConfiguration
项目启动,就可以自动装配 MyAutoConfiguration

项目的整体结构如下:

6. Maven 打包项目

通过命令 mvn clean install 打包项目,得到jar包 sayhello-spring-boot-starter-1.0-SNAPSHOT.jar

接下来可以把jar包上传到maven私服中,也可以通过导入的方式导入到另一个项目中使用,这里使用后者。在另一个项目中操作:

7. 配置 hello:name 值

server:
  port: 9000

hello:
  name: wangdaye-

8. 创建测试 controller

TestController.java

@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    SayHello sayHello;

    @GetMapping("/hello")
    public String hello(){
        return sayHello.getMsg();
    }
}

浏览器访问 localhost:9000/test/hello

王大爷跟你打了声招呼,看到没~~


知九千
4 声望1 粉丝

让技术,变得简单