如何自定義一個(gè)spring-boot-starter

開(kāi)發(fā)byx-spring-boot-starter項(xiàng)目

首先創(chuàng)建一個(gè)Maven項(xiàng)目,名為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>

在項(xiàng)目中建一個(gè)包byx.spring,在這個(gè)包下創(chuàng)建下面兩個(gè)類:

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

其中,ByxConfigByx的配置類,負(fù)責(zé)向Spring容器中導(dǎo)入Byx。

resources下創(chuàng)建一個(gè)META-INF文件夾,在該文件夾下創(chuàng)建一個(gè)spring.factories文件,并寫入如下內(nèi)容:

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

其中byx.spring.ByxConfig是我們自定義的配置類的全限定類名。

這個(gè)文件非常重要,因?yàn)镾pring項(xiàng)目啟動(dòng)時(shí)會(huì)讀取所有導(dǎo)入的Jar包下面的META-INF/spring.factories文件,這樣Spring就能加載我們自定義的配置類。

到此,一個(gè)簡(jiǎn)單的spring-boot-starter就開(kāi)發(fā)完成了,運(yùn)行一下mvn deploy把項(xiàng)目部署到本地Maven倉(cāng)庫(kù)。

使用byx-spring-boot-starter項(xiàng)目

創(chuàng)建另外一個(gè)Maven項(xiàng)目,并引入剛剛開(kāi)發(fā)的byx-spring-boot-starter依賴:

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

創(chuàng)建一個(gè)啟動(dòng)類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();
    }
}

運(yùn)行main函數(shù),控制臺(tái)輸出如下:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: 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\項(xiàng)目-2021\byx-spring-boot-starter-test\target\classes started by byx in D:\Programs\項(xiàng)目-2021\byx-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,說(shuō)明我們的Byx組件被成功注冊(cè)到Spring的容器里了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容