@Autowire
Spring マネージド サービスを自分のDeserializer
. new
シリアライザー/デシリアライザーを呼び出すときにオペレーターを使用して、誰かが私をジャクソンに知らせました。これは、 my の Jackson のインスタンスの自動配線がないことを意味しましたDeserializer
。@Autowire
サービスクラスを my に入れる方法は次のDeserializer
とおりです。
context.xml
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper" />
</bean>
</mvc:message-converters>
</mvc>
<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<!-- Add deserializers that require autowiring -->
<property name="deserializersByType">
<map key-type="java.lang.Class">
<entry key="com.acme.Anchor">
<bean class="com.acme.AnchorDeserializer" />
</entry>
</map>
</property>
</bean>
myDeserializer
が Spring 管理の Bean になったので、自動配線が機能します。
AnchorDeserializer.java
public class AnchorDeserializer extends JsonDeserializer<Anchor> {
@Autowired
private AnchorService anchorService;
public Anchor deserialize(JsonParser parser, DeserializationContext context)
throws IOException, JsonProcessingException {
// Do stuff
}
}
AnchorService.java
@Service
public class AnchorService {}
更新:これを書いたときの元の回答はうまくいきましたが、@ xi.linの回答はまさに必要なものです。いい発見!