2012-05-04 5 views
8

У меня есть пружинный регулятор/POJO так:Могу ли я переопределить @RequestMapping для типа метода?

@RequestMapping("/foo"); 
public class MyController { 
    @RequestMapping("/bar") 
    public String MyAction() { return someSharedFunc(false); } 

    @RequestMapping("/debug/ping"); 
    public String MyDebugPing() { return someSharedFunc(true); } 

    private String someSharedFunc(boolean debug) { 
     if(debug) return "FooBar"; else return "Debug!"; 
    } 
} 

В этом случае URL для MyDebugPing является /foo/debug/ping. Тем не менее, я хочу, чтобы это было /debug/ping, фактически игнорируя RequestMapping для класса.

Возможно ли это?

ответ

5

Просто удалите аннотацию @RequestMapping из класса и используйте полные пути для индивидуальных методов. Например.

public class MyController { 
    @RequestMapping("/foo/bar") 
    public String MyAction() { return someSharedFunc(false); } 

    @RequestMapping("/debug/ping"); 
    public String MyDebugPing() { return someSharedFunc(true); } 

    private String someSharedFunc(boolean debug) { 
     if(debug) return "FooBar"; else return "Debug!"; 
    } 
} 

Если есть много способов, вы можете просто переместить метод на другой контроллер.

+1

Спасибо. Это мой план B. Существует около десятка методов, поэтому я постараюсь избежать этого, если смогу. –

+0

Я обновил свой ответ. Вы можете удалить метод из класса (например, в том же пакете, чтобы иметь доступ к защищенным или видимым методам пакета). Это потребует некоторой работы (изменение частного доступа к пакету и т. Д.). –

Смежные вопросы