2017-11-30 23 views
2

maven依存関係を使用する別のスプリングブートアプリケーション内でjarファイルとしてSpringブートプロジェクトを使用しています。私は、マイクロサービスからカスタム注釈を有効にする場合にのみjarのコンポーネントスキャンを実行したいと思います。カスタム注釈を使用したコンポーネントスキャン

@SpringBootApplication 
//@ComponentScan({"com.jwt.security.*"}) To be removed by custom annotation 
@MyCustomAnnotation //If I provide this annotation then the security configuration of the jar should be enabled. 
public class MicroserviceApplication1 { 

    public static void main(String[] args) throws Exception { 

     SpringApplication.run(MicroserviceApplication1.class, args); 

    } 

} 

いくつか考えてください。

+0

私はあなたが共有したいコードをリファクタリングして別のプロジェクトを作ることを提案します...マイクロサービスの世界で一般的な共有コードとは別に悪い考えです...モノレポの設定が必要です。 – khmarbaise

+0

どうやってこれを実装しましたか? –

答えて

0

@Conditionalを使用して構成を定義できます(例を参照してhereを参照)。一部のソース

@Configuration 
public class MyConfiguration { 

    @Bean(name="emailerService") 
    @Conditional(WindowsCondition.class) 
    public EmailService windowsEmailerService(){ 
     return new WindowsEmailService(); 
    } 

    @Bean(name="emailerService") 
    @Conditional(LinuxCondition.class) 
    public EmailService linuxEmailerService(){ 
    return new LinuxEmailService(); 
    } 
} 

からコードや条件

public class WindowsCondition implements Condition{ 

    @Override 
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { 
    return context.getEnvironment().getProperty("os.name").contains("Windows"); 
    } 
} 

あなたがプロファイルを使用することができます。希望のパッケージをスキャンして@Profileを設定クラスに追加してください。

もう1つの代替方法がhereと記載されています。

@AutoconfigureAfter(B.class) 
@ConditionalOnBean(B.class) 
public class A123AutoConfiguration { ...} 
関連する問題