Spring MVC devolviendo JSONS y manejo de excepciones

Estoy usando Spring MVC con Controllers, mi pregunta es cómo devuelvo una respuesta JSON que es diferente del objeto @ResponseBody que se devuelve y se convierte en un JSON para que se devuelva.

Para más detalles, tengo el objeto llamado "UserDetails" que tiene dos campos llamados "name", "emailAddress"

@ResponseBody UserDetails

now el json regresado se verá como

{name: "TheUsersName", emailAddress: "[email protected]"}

¿Hay alguna forma de modificar el json antes de regresar (TODOS los json en todos los métodos en todos los controladores) donde se agregará un campo de "estado" y los otros datos de json estarán debajo de la clave "data" en el json.

Además, ¿cómo devuelvo un json a la interfaz cuando el servidor Java de algún lugar arroja una excepción, el json debe tener "estado: falso" y el nombre de la excepción (al menos la parte de estado)

Respuestas a la pregunta(3)

Su respuesta a la pregunta