关于springboot:SpringBoot源码-自定义starter

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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理