Verwenden von Jackson Mixins mit MappingJacksonHttpMessageConverter & Spring MVC

Ich werde sofort zu meiner eigentlichen Frage / Ausgabe kommen,Gibt es eine Möglichkeit, auf Anmerkungen zur Handlermethode des Controllers in einem HttpMessageConverter zuzugreifen? Ich bin mir ziemlich sicher, dass die Antwort Nein ist (nachdem ich den Quellcode von Spring durchgesehen habe).

Gibt es eine andere Möglichkeit zu verwendenJackson Mixins gepaart bei der VerwendungMappingJacksonHttpMessageConverter? Ich habe bereits meinen eigenen HttpMessageConverter implementiert, der auf MappingJacksonHttpMessageConverter basiert, um ihn für die Verwendung von Jackson 2.0 zu "upgraden".

Controller.class

@Controller
public class Controller {

    @JsonFilter({ @JsonMixin(target=MyTargetObject.class, mixin=MyTargetMixin.class) })
    @RequestMapping(value="/my-rest/{id}/my-obj", method=RequestMethod.GET, produces="application/json")
    public @ResponseBody List<MyTargetObject> getListOfFoo(@PathVariable("id") Integer id) {
        return MyServiceImpl.getInstance().getBarObj(id).getFoos();
    }
}

@JsonFilter ist eine benutzerdefinierte Anmerkung, die ich an den Mapper übergeben möchte, der dann automatisch direkt an den ObjectMapper übergeben werden kann.

MappingJacksonHttpMessageConverter.class

public class MappingJacksonHttpMessageConverter extends AbstractHttpMessageConverter<Object> {

    ...

    @Override
    protected void writeInternal(Object object, HttpOutputMessage outputMessage) {

            //Obviously, no access to the HandlerMethod here.

    }

    ...
}

Ich habe weit und breit nach dieser Antwort gesucht. Bisher habe ich nur Leute gesehen, die ihr Objekt innerhalb der Handhabungsmethode des Controllers (Verstoß gegen die JSON - Richtlinie) in JSON serialisiert habenDRY-Prinzip wiederholt in jeder Methode). Oder kommentieren Sie ihre Datenobjekte direkt (keine Entkopplung oder mehrfache Konfigurationen, wie Sie Ihre Objekte verfügbar machen).

Es kann sein, dass dies in einem HttpMessageConverter nicht möglich ist. Gibt es noch andere Möglichkeiten? Interceptors gewähren Zugriff auf die HandlerMethod, nicht jedoch auf das zurückgegebene Objekt der Handler-Methode.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage