2013-06-15 1 views
0

Я использую Spring Roo для моего отдыха. Полные веб-службы. Отлично работает. Теперь я хочу изменить поведение по умолчанию для всех экземпляров. Когда сообщение завершено, мне нужен результирующий идентификатор записи. Код РуКак изменить возвращаемый результат функции Spring Roo

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json") 
public ResponseEntity<String> MdrAspectController.createFromJson(@RequestBody String json) { 
    MdrAspect mdrAspect = MdrAspect.fromJsonToMdrAspect(json); 
    mdrAspectService.saveMdrAspect(mdrAspect); 
    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Content-Type", "application/json"); 
    return new ResponseEntity<String>(headers, HttpStatus.CREATED); 
} 

Я хотел бы изменить возвращение к

return new ResponseEntity<String>(mdrAspect, headers, HttpStatus.CREATED); 

означает, что возвращает созданную запись (как мне нужно Индентификационный).

Я хотел бы написать аспект, чтобы сделать это для всех Roo_Controller_Json.aj. Но это уже аспект. Это возможно?

+0

Я не знаю, можно ли записать изменение размера возвращаемого значения. Я не думаю, что есть проблема с 2 аспектами/pointcuts на том же методе. – CodeChimp

ответ

1

Да, можно применять аспекты по другим аспектам. Это даже типичная ловушка, с которой сталкиваются многие новички, потому что они забывают исключить свой собственный аспект из своих pointcuts, что может привести к тому, что советы вызываются в бесконечном цикле, что приводит к переполнению стека - приятное слово для использования здесь. ;-)

Да, можно изменить возвращаемое значение метода с помощью совета around().

Нет, невозможно получить доступ к значениям локальных переменных из одного аспекта. Поэтому в вашем примере, если вы хотите получить доступ к значению mdrAspect, вам нужно получить его из другого источника или создать экземпляр самостоятельно.

Сообщите мне, если у вас есть более конкретные вопросы.

+0

Итак, вы говорите, что я не могу делать то, что хочу, - чтобы вернуть mdrAspect. mdrAspect - это новая, локальная переменная, по определению POST, а аспект избыточного исправления не имеет доступа к локальным переменным. Но спасибо за очень информативный ответ. – Ribeye