SpringBoot四大核心之starter——自定义starter

四大核心

1、starter:jar包的引入,解决jar版本冲突问题
2、自动装配:简单配置甚至零配置即可运行项目
3、actuator:springboot程序监控器
4、CLI:命令行

starter

starter的命名有一种习惯,官方的starter一般都是spring-boot-starter-xxx,而我们自定义的starter一般都是xxx-spring-boot-starter。

首先我们需要明白一件事,就是我们自定义的bean是可以自动装配过来的,而我们第三方自定义的starter是如何被componentScan扫描到的呢,其实有一个约定,就是在resources下创建一个META-INF目录,在该目录下创建一个spring.factories文件,然后在该文件下说明哪些类下是你的bean。
org.springframework.boot.autoconfigure.EnableAutoConfiguration

创建一个普通的springboot项目

我这里命名为hzy-spring-boot-starter,当你创建好之后,可以把启动类删了,因为我做依赖一般都是被其他项目引入的,所以留着也没用,然后需要引入两个依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

引入之后,我们可以定义一个service,里面可以写我们的业务代码。

public class HzyService {
    public String getHelloWorld() {
        return "hello world";
    }
}

然后就是定义一个配置类,这里命名为AutoConfig,用来将我们的service注入到IoC容器中

@Configuration
public class AutoConfig {
    @Bean
    public HzyService hzyService() {
        return new HzyService();
    }
}

然后就是最重要的一步了,让我们的配置类能被扫描到,在Spring中,约定大于配置,约定了我们在resources下创建一个META-INF的目录,里面写一个spring.factories文件,配置上路径即可。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.hzy.AutoConfig

最后的最后就是将这个项目打包到我们本地的maven仓库了,执行下面的命令即可。

mvn clean install -Dmaven.test.skip=true

最后,像引入其他依赖一样,引入该依赖就可以了,里面那个HzyService,可以直接通过自动装配创建对象。

@Autowired
private HzyService hzyService;

至此,自定starter就结束了,是不是很简单,如果世界这么简单就好了。。。

配置文件

我们在写一些官方的配置的时候,可能会发现,当我们写了一个前缀,后面会有一些提示,重要的是,我们的配置能够生效,这是怎么做到的呢?

其实是通过一个@ConfigurationProperties注解实现的,通过配置前缀,它可以进行扫描到你的配置。

@ConfigurationProperties(prefix = "hzy")
public class HzyProperties {
    private String name;

    public String getName() {
        return name;
    }

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

这样一个简单的配置,我们就可以在引入该jar的项目中进行配置了,如果不配置的话,name属性为null。

此时我们修改我们的Service类,把该配置引进来。

public class HzyService {
    @Autowired
    private HzyProperties hzyProperties;

    public String getHelloWorld() {
        return "hello world: " + hzyProperties.getName();
    }
}

另外,我们还需要修改我们的自动装配类,通过@Import注解,将该类提前注入到IoC容器。

@Configuration
@Import(HzyProperties.class)
public class AutoConfig {
    @Bean
    public HzyService hzyService() {
        return new HzyService();
    }
}

在这里插入图片描述

当我们引入了该依赖之后,会有提示了,配置一下name,再次运行

在这里插入图片描述

可以看到,配置已生效,好了,今天的分享就到这里了。

  • 52
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论
Spring Boot是一个快速开发微服务的框架,它提供了大量的自动化配置和快速开发的工具。在Spring Boot中,我们可以使用Starter来快速集成一些常用的功能,如数据库、缓存、web等。而自定义Starter则可以让我们将自己的功能快速集成到Spring Boot中,下面是自定义Starter的流程: 1. 创建Maven项目 首先,我们需要创建一个Maven项目作为我们自定义Starter的项目。在项目的pom.xml中添加Spring Boot的依赖,以及其他需要集成的依赖。 2. 编写自动配置类 自动配置类是自定义Starter核心,它负责将我们自定义的功能集成到Spring Boot中。在自动配置类中,我们可以使用@Conditional注解来判断是否需要进行配置。 3. 编写Starter类 Starter类是我们自定义Starter的入口,它负责将自动配置类注入到Spring容器中。在Starter类中,我们需要使用@EnableAutoConfiguration注解来启用自动配置。 4. 打包和发布Starter 当我们完成了自动配置类和Starter类的编写后,我们需要将自定义Starter打包成jar包,并发布到Maven仓库中,以便其他项目可以通过Maven依赖的方式使用我们的Starter。 5. 在项目中使用自定义Starter 在其他项目中使用自定义Starter非常简单,只需要在项目中的pom.xml中添加我们自定义Starter的依赖即可。Spring Boot会自动将我们的自定义Starter集成到项目中,并进行自动配置。 以上就是自定义Starter的流程,通过自定义Starter,我们可以将自己的功能快速集成到Spring Boot中,提高开发效率。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贺志营

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

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

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

打赏作者

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

抵扣说明:

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

余额充值