Spring Boot 動手寫乙個 Start

2021-09-24 08:06:31 字數 2736 閱讀 9141

我們在使用springboot 專案時,引入乙個springboot start依賴,只需要很少的**,或者不用任何**就能直接使用預設配置,再也不用那些繁瑣的配置了,感覺特別神奇。我們自己也動手寫乙個start.

pom 檔案如下

org.springframework.bootgroupid>

spring-boot-dependenciesartifactid>

2.1.0.releaseversion>

pomtype>

importscope>

dependency>

dependencies>

dependencymanagement>

org.springframework.bootgroupid>

spring-boot-autoconfigureartifactid>

compilescope>

dependency>

org.projectlombokgroupid>

lombokartifactid>

1.18.6version>

trueoptional>

providedscope>

dependency>

org.springframework.bootgroupid>

spring-boot-starter-testartifactid>

testscope>

dependency>

dependencies>

複製**

演示**

demoservice:

public

inte***ce

demoservice

複製**

demoserviceimpl:

public

class

demoserviceimpl

implements

demoservice

@override

public integer getcode()}

複製**

demoautoconfiguration:

@configuration

public

class

demoautoconfiguration

}複製**

spingboot 的自動註解主要還是用這些條件註解來實現的。請檢視之前的文章:

spring boot 自動配置之條件註解

spring boot 自動配置之@enable*與@import註解

spring boot 自動配置之@enableautoconfiguration

讓springboot 識別自動自動配置的**

需要在resources下新建檔案meta-inf/spring.factories

org.springframework.boot.autoconfigure.enableautoconfiguration=com.jiuxian.demoautoconfiguration

複製**

springboot 中的註解 @enableautoconfiguration 在專案啟動的時候會通過 springfactoriesloader.loadfactorynames 方法獲取 spring.factories 檔案下的配置類

測試類public

class

}複製**

@runwith(springrunner.class)

@springboottest

public

class

}複製**

service

@service

public

class

testservice

}複製**

測試

@resource

private testservice testservice;

@test

public

void

test

()複製**

結果:

code:123

message:hello!

複製**

重寫demoservice方法

@service

public

class

demoserviceimpl

implements

demoservice

@override

public integer getcode()}

複製**

測試結果

code:123

message:hello!

複製**

之所以這樣的結果,是因為在start專案中的demoservice 實現類中有乙個 @conditionalo****singbean(demoservice.class) 的註解,如果不存在則使用預設的

github原始碼位址

Spring Boot 動手寫乙個 Start

我們在使用springboot 專案時,引入乙個springboot start依賴,只需要很少的 或者不用任何 就能直接使用預設配置,再也不用那些繁瑣的配置了,感覺特別神奇。我們自己也動手寫乙個start.pom 檔案如下 org.springframework.bootgroupid sprin...

動手寫乙個阻塞佇列

之前看佇列,都是停留在看和使用的階段。再次看佇列的時候,忽然發現並沒有深入到底層。比如 阻塞佇列時如何阻塞的呢?是監聽,還是等待呢?然後看著看著就看到了lock和reentrantlock,為什麼不使用synchronized呢?為什麼使用condition,condition是什麼呢?wait,n...

springboot手寫乙個rbac

對於springboot來說,可以利用一些框架實現rbac,例如spring security等。但是做專案的時候,如果要使用元件,不僅僅需要考慮元件能帶給我們什麼,而且還要考慮元件裡面那些東西是不想要的,以及學習成本等等。現在我們就只需要簡單實現乙個基於api 頁面資源 角色 使用者的許可權管理系...