2016-11-28 16 views
0

我需要發佈基於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); 
    } 
} 

有沒有什麼辦法讓這項工作?

在此先感謝!

回答

1

你有兩個選擇:

選項1

你可以把你的類變成「自動配置」,通過創建一個META-INF/spring.factories文件中包含以下內容您的罐子:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 
com.your.package.BusinessConfig 

現在使用您的罐子,如果使用@EnableAutoConfiguration@SpringBootApplication註釋應用程序,您的配置將被處理和豆類創建。

您可能想在需要時給使用你的罐子更多控制應用一些@ConditionalXXX註解註釋配置。

有關更多信息,請參閱documentation

選項2

像你這樣的嘗試,您可以創建自定義@EnableXXX註解。

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.TYPE) 
@Import(com.your.package.BusinessConfig.class) 
public @interface EnableDemoBusiness { 

} 
+0

大它完美的作品。作爲派生的問題,我有以下幾點。 a。消費應用程序有它的上下文,那就是我的bean被創建的地方,重用jar在它自己的儀式中沒有上下文? b。我使用請求作用域bean,我可以驗證是否存在WebApplicationContext並只允許創建bean?我應該通過@ConditionalXXX註釋來檢測WebBasedApplicationContext bean嗎? – Avis

+0

@siva你可以使用'@ ConditionalOnWebApplication'作爲這個bean。 HTTP://docs.spring。IO /彈簧引導/文檔/電流/ API /組織/ springframework的/引導/自動配置/狀態/ ConditionalOnWebApplication.html – Strelok

相關問題