2017-02-16 17 views
2

として働いていない私は3春・ブート・スターター・プロジェクトを持っている@AutoConfigureAfterが希望

は、自動クラスの一つは、次のコードを持っています

@Configuration 
@ConditionalOnClass(value = Config.class) 
@AutoConfigureAfter(value = {FileGeneratorConfig.class, FileUploaderConfig.class}) 
public class JobConfig 

FileGeneratorConfigとFileUploaderConfigも自動クラスです。

FileUploaderConfigで作成したBeanが最初に作成されることを期待していました。これをテストして、JobConfigとFileUploaderConfigにBeanを作成するメソッドにブレークポイントを設定しました。しかし、私の@AutoConfigureAfterが動作していないと思うように、ブレークポイントが最初にJobConfigにヒットします。それは正しい推測です。

@Bean 
    FileUtilContainer fileUtilContainer(FileUtilContainerProperties fileUtilContainerProperties){ 
     return new FileUtilContainer(FileUtil.createDirectory(fileUtilContainerProperties.getArchive()), 
            FileUtil.createDirectory(fileUtilContainerProperties.getWorking()), 
            FileUtil.createDirectory(fileUtilContainerProperties.getConfirmation()), 
            FileUtil.createDirectory(fileUtilContainerProperties.getConfirmationProcessed()), 
            FileUtil.createDirectory(fileUtilContainerProperties.getError()), 
            FileUtil.createDirectory(fileUtilContainerProperties.getErrorProcessed())); 
    } 

とFileUtilContainerProperties:

@Component 
@ConfigurationProperties(prefix = "batch.letter.directory", ignoreUnknownFields = false) 
public class FileUtilContainerProperties 

が、それはFileUtilContainerProperties Beanを作成していない

もFileUploaderConfigに私はこれを持っています。私はここに何かを逃していますか

答えて

2

AutoConfigureAfterは、構成ファイルが処理され、Bean定義が作成される順序を制御します。これらの定義からBeanが作成される順序は別の問題であり、特に、Bean間に存在する依存関係に依存します。

+0

ありがとうございます。 @Componentが動作していない2番目の部分はどうでしょうか? FileUtilContainerPropertiesがコンテキストに追加されませんでしたか? –

+0

私はそれがコンポーネントスキャンされていないパッケージにあると思います。自動設定でのコンポーネントスキャンに頼るのは避けるのが最善です。代わりに@FileUploaderConfig'に '@EnableConfigurationProperties(FileUtilContainerProperties.class)'を使用したいと思います。 –

+0

ありがとうAndy私はそれを使用し、それは正常に動作します。 AutoConfigurationを使用する際には、コンポーネントのスキャンを避け、@EnableConfigurationPropertiesを正しく使用する必要があります。 –