次のように私は、私自身のjackson
ObjectMapper
Beanを作成したい:springbootでJackson2ObjectMapperBuilderを強制するには?
@SpringBootApplication
@AutoConfigureBefore(JacksonAutoConfiguration.class) //even this does not help
public class MyConfig extends SpringBootServletInitializer {
@Bean
@Primary
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
return builder.createXmlMapper(true).build(); //much more configurations
}
}
問題:Beanが作成されることはありませんが、代わりにデフォルトJacksonAutoConfiguration
が実行されます。
package org.springframework.boot.autoconfigure.jackson;
@Configuration
@ConditionalOnClass(ObjectMapper.class)
public class JacksonAutoConfiguration {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
return builder.createXmlMapper(false).build(); //this is always executed!
}
}
だから、何とかObjectMapper
BeanをJacksonAutoConfiguration
が評価されたときにはまだ存在しません。しかし、なぜ?
ブレークポイントでデバッグすると、私のbeanがでないことがわかりますが呼び出されました! しかし、私が気づいたのは、@AutoConfigureBefore
があるにもかかわらず、の前にのいずれかがまだMyConfig
に入っています。不思議ですか?
明確にするために、デバッガのブレークポイントをそこに配置しましたが、呼び出されることはありません。 – Andremoniy
正確には、私の 'ObjectMapper' beanは完全に無視されています(これは同じ' MyConfig'クラス内の他のすべてのBeanには当てはまりません)。 – membersound
あなたの質問にもっとコンテキストを提供できますか?あなたのアプリケーションをJAR、戦争、あなたのIDEの中で実行していますか、それとも何か他のもの?その主な方法は、それがあればどのように見えますか?[最小、完全、 –