2 回答

TA貢獻1831條經驗 獲得超9個贊
你可以試試這個,它對我有用:
@SpringBootApplication
@ComponentScan(excludeFilters = {@ComponentScan.Filter(
type = FilterType.ASSIGNABLE_TYPE, classes = {WorkerConfig.class, WorkerExecutors.class, Worker.class})})

TA貢獻1735條經驗 獲得超5個贊
Auto-config packages 位于 org.springframework.boot.autoconfigure 下。這就是你不能這樣做的原因:
@SpringBootApplication(exclude= {WorkerExecutors.class, Worker.class,WorkerConfig.class})
春天做你吩咐做的事。您正在致電:
@ComponentScan(basePackages = {"com.adobe"}
, excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = {WorkerConfig.class, WorkerExecutors.class, Worker.class})})
因此,Spring 不會加載任何這些 Worker 類。這就是為什么Spring不會“執行”用@Configuration注釋的類。
也就是說,你試圖做的事情對我來說沒有意義。聽起來你有“模塊”(java類),但它們都是同一個彈簧上下文的一部分。如果你有一個Spring Context,那么你可以告訴Spring加載一些@Configuration類,而不是其他一些。然后,從您的“模塊”中,您可以注入所需的任何內容。模塊 1 將從模塊 3 中注入 Bean,但模塊 2 不會。就是這么簡單。
如果由于某種原因,您確實需要阻止模塊 2 從模塊 3 訪問 Bean,但仍然保持模塊 3 從模塊 1 中可見,那么我會將模塊 1 和模塊 2 分隔在兩個不同的 Spring Boot 應用程序中,模塊 3 成為通用代碼。但這種方法可能會破壞您當前的架構。
更新 周五 3月 29 2019
試試這個:
@SpringBootApplication
@ComponentScan(basePackages = { "com.myapp" }, excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = { MyClass2.class }) })
它對我有用。我有MyClass和MyClass2,MyClass被加載,MyClass2沒有。我嘗試使用Spring Boot 1.5.9.RELEASE和Spring Bom來獲取所有依賴項。
添加回答
舉報