【Springboot】Springboot自定义Starter

1. 使用场景

现实开发中,很多情况下需要自己去写一些工具,或者自己去写一些配置,又或者对别人写的框架进行二次的封装,这些东西都是以后非常常用的东西,可能考虑把这些东西打成一个Jar供公司内部的所有人使用。

2. 自定义Starter

2.1 修改目录结构

新建一个SpringBoot项目,将项目的目录改成如下图所示
在这里插入图片描述
大致说明一下:

  1. 删除主类
  2. 删除application.properties/yml
  3. resource目录下,新建一个META-INF文件夹,新建spring.factories文件

2.2 引入pom依赖

 <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
    	<!--提供spring中的各种注解以及spring初始化的依赖配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- 起到配置信息提示的作用-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2.3 编写简单的配置

获取yml中的配置信息

@Component
@ConfigurationProperties(prefix = "customer")
public class CustomerProperties {

    /**
     * 名称
     */
    private String name;

    /**
     * 名称对应的值
     */
    private String value;

    public String getName() {
        return name;
    }

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

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

写一个自定义的Bean

public class MyCustomerBean {

    private String name;

    private String value;

    public MyCustomerBean(){

    }

    public String getName() {
        return name;
    }

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

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

编写配置类,往spring中注入Bean

@Configuration
public class MyCustomerBeanConfiguration {

    @Bean
    public CustomerProperties customerProperties(){
        return new CustomerProperties();
    }

    @Bean
    public MyCustomerBean myCustomerBean(CustomerProperties customerProperties){
        System.out.println("配置Customer......");
        MyCustomerBean myCustomerBean = new MyCustomerBean();
        myCustomerBean.setName(customerProperties.getName());
        myCustomerBean.setValue(customerProperties.getValue());
        System.out.println("customer配置完成");
        return myCustomerBean;
    }

}

2.4 指定自动配置的类

在spring.factories中添加如下信息

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.han.configuration.MyCustomerBeanConfiguration

2.5 package 然后 install

3. 使用自定义的Starter

引入我们刚刚自定义的starter

		<dependency>
            <groupId>com.han</groupId>
            <artifactId>han-spring-boot-starter</artifactId>
            <version>1.0</version>
        </dependency>

可以看到yml文件中已经有对应的提示了
在这里插入图片描述
当然,我们注册进去的Bean,同样可以使用

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

    @Autowired
    private MyCustomerBean myCustomerBean;

    @RequestMapping("/demo")
    public String demo(){
        System.out.println(myCustomerBean.getName());
        System.out.println(myCustomerBean.getValue());
        return "success!";
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值