• 如何自定义一个spring-boot-starter


    开发byx-spring-boot-starter项目

    首先创建一个Maven项目,名为byx-spring-boot-starter

    <groupId>byx.spring</groupId>
    <artifactId>byx-spring-boot-starter</artifactId>
    <version>1.0.0</version>
    

    引入如下依赖:

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

    在项目中建一个包byx.spring,在这个包下创建下面两个类:

    public class Byx {
        public void hello() {
            System.out.println("This is byx.");
        }
    }
    
    @Configuration
    public class ByxConfig {
        @Bean
        public Byx byx() {
            return new Byx();
        }
    }
    

    其中,ByxConfigByx的配置类,负责向Spring容器中导入Byx

    resources下创建一个META-INF文件夹,在该文件夹下创建一个spring.factories文件,并写入如下内容:

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=
    byx.spring.ByxConfig
    

    其中byx.spring.ByxConfig是我们自定义的配置类的全限定类名。

    这个文件非常重要,因为Spring项目启动时会读取所有导入的Jar包下面的META-INF/spring.factories文件,这样Spring就能加载我们自定义的配置类。

    到此,一个简单的spring-boot-starter就开发完成了,运行一下mvn deploy把项目部署到本地Maven仓库。

    使用byx-spring-boot-starter项目

    创建另外一个Maven项目,并引入刚刚开发的byx-spring-boot-starter依赖:

    <dependency>
        <groupId>byx.spring</groupId>
        <artifactId>byx-spring-boot-starter</artifactId>
        <version>1.0.0</version>
    </dependency>
    

    创建一个启动类Main

    @SpringBootApplication
    public class Main {
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(Main.class);
            Byx byx = context.getBean(Byx.class);
            byx.hello();
        }
    }
    

    运行main函数,控制台输出如下:

      .   ____          _            __ _ _
     /\ / ___'_ __ _ _(_)_ __  __ _    
    ( ( )\___ | '_ | '_| | '_ / _` |    
     \/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v2.4.5)
    
    2021-04-17 20:41:28.699  INFO 9836 --- [           main] byx.test.Main                            : Starting Main using Java 15 on DESKTOP-SLMK9HJ with PID 9836 (D:Programs项目-2021yx-spring-boot-starter-test	argetclasses started by byx in D:Programs项目-2021yx-spring-boot-starter-test)
    2021-04-17 20:41:28.703  INFO 9836 --- [           main] byx.test.Main                            : No active profile set, falling back to default profiles: default
    2021-04-17 20:41:29.497  INFO 9836 --- [           main] byx.test.Main                            : Started Main in 1.295 seconds (JVM running for 1.699)
    This is byx.
    

    最后一行输出了This is byx,说明我们的Byx组件被成功注册到Spring的容器里了。

  • 相关阅读:
    《穿越时空的git》之创建版本库和常用命令操作
    全链路灰度在数据库上我们是怎么做的?
    菜鸟 CPaaS 平台微服务治理实践
    与字节、小米、移动云等企业一起揭秘 RocketMQ 实践之道
    2022 云原生编程挑战赛火热报名中!看导师如何拆解 Serverless 赛题?
    阿里云消息队列 Kafka消息检索实践
    阿里云 MSE 支持 Go 语言流量防护
    不懂就问,快速成为容器服务进阶玩家!
    有奖征文 | 2022 云原生编程挑战赛征稿活动开启!
    发评测赢好礼 | Serverless 函数计算征集令
  • 原文地址:https://www.cnblogs.com/baiyuxuan/p/14672061.html
Copyright © 2020-2023  润新知