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