zoukankan      html  css  js  c++  java
  • 如何自定义一个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的容器里了。

  • 相关阅读:
    剑指 Offer 46. 把数字翻译成字符串
    剑指 Offer 45. 把数组排成最小的数
    1319.连通网络的操作次数-并查集
    数字序列中某一位的数字
    989.数组形式的整数加法
    java多线程
    剑指offer 48 -最长不含重复字符的子字符串 动态规划
    springboot 使用 lombok插件中的@data 注解
    netty 转发服务
    在静态方法中获取properties /yml 配置文件中的信息
  • 原文地址:https://www.cnblogs.com/baiyuxuan/p/14672061.html
Copyright © 2011-2022 走看看