開(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();
}
}
其中,ByxConfig是Byx的配置類,負(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的容器里了。