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