Spring Boot 動手寫乙個 Start

2021-09-12 06:30:00 字數 3064 閱讀 5515

我們在使用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 頁面資源 角色 使用者的許可權管理系...