0

@JsonViewSpring MVC レストコントローラー全体を宣言する方法はありますか?

@JsonView次のような特定のメソッドを宣言できることはわかっています。

 @RequestMapping(value = "/user", method = RequestMethod.G
 @JsonView(User.WithoutPasswordView.class)
 public User getUser() {
      return new User("eric", "7!jd#h23");
 } 

しかし@JsonView、私のメソッドは夕食クラスで定義されており、単一の注釈を追加するためだけにメソッドをオーバーライドしたくないため、メソッドごとに定義したくありません。コントローラー全体、つまり次のよう
に宣言したいと思います。@JsonView

@RestController
@RequestMapping(ZONES_PATH)
@JsonView(User.WithoutPasswordView.class)
public class ZoneResource extends GenericRestService<Zone> {
     ...

これを達成する方法はありますか?

4

1 に答える 1

1

定義済みのビューを使用するカスタム オブジェクト マッパーを作成する

public class CustomObjectMapper extends ObjectMapper {

    public CustomObjectMapper() {
        super();
        setSerializationConfig(getSerializationConfig()
                .withView(User.WithoutPasswordView.class));
    }
}

spring が使用するデフォルトのオブジェクト マッパーとして登録する

<mvc:annotation-driven>
    <mvc:message-converters>        
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="objectMapper" ref="jacksonObjectMapper" />
        </bean>        
    </mvc:message-converters>
</mvc:annotation-driven>

<bean id="jacksonObjectMapper" class="com.web.CustomObjectMapper" />
于 2015-09-11T14:40:30.080 に答える