我需要發佈基於Spring引導的jar,這應該在其他基於Spring/Spring引導的應用程序中使用。 在我的重用jar我有一個類(BusinessConfig)註釋@Configuration它給出了兩個bean。該類位於重用jar的基本包中。使用額外的註釋掃描應用程序中包含的彈簧引導罐
@Configuration
public class BusinessConfig {
@Bean(name = "BusinessRepoManager")
public BusinessRepoManager businessRepoManager(){
return BusinessRepoManager.getInstance();
}
@Autowired
@Bean(name = "CustomerManager")
@Scope("request")
public CustomerManager customerManager(BusinessRepoManager busrepoManager){
return CustomerManager.getInstance();
}
}
在第二個應用程序,我已經加入的依賴,並在應用程序類我有聲明
@ComponentScan(basePackageClasses = {BusinessConfig.class})
通知Spring上下文來尋找BusinessConfig類提供,以及豆類。
這很好,因爲我可以看到bean被創建。
是否有可能簡化這個,應該都使用應用程序知道在我的配置存在/包名的類名。 我嘗試在jar項目中創建一個自定義註釋,並在消費應用程序中使用它。
@ComponentScan(basePackageClasses = {BusinessConfig.class})
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Component
public @interface EnableDemoBusiness {
}
然後在我的消費應用我只是說
@EnableDemoBusiness
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
有沒有什麼辦法讓這項工作?
在此先感謝!
大它完美的作品。作爲派生的問題,我有以下幾點。 a。消費應用程序有它的上下文,那就是我的bean被創建的地方,重用jar在它自己的儀式中沒有上下文? b。我使用請求作用域bean,我可以驗證是否存在WebApplicationContext並只允許創建bean?我應該通過@ConditionalXXX註釋來檢測WebBasedApplicationContext bean嗎? – Avis
@siva你可以使用'@ ConditionalOnWebApplication'作爲這個bean。 HTTP://docs.spring。IO /彈簧引導/文檔/電流/ API /組織/ springframework的/引導/自動配置/狀態/ ConditionalOnWebApplication.html – Strelok