I found in jackson-databind project. NumberSerializer is not a ContexturalSerializer that means it cannot interact with @JsonFormat annotation. So I cannot format my BigDecimal with @JsonFormat. I wonder if jackson's future versions will support this feature.
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "#,##0.###")
private BigDecimal money;