2012-05-04 35 views
8

Tôi có một mùa xuân khiển/POJO như thế này:Tôi có thể ghi đè lên @RequestMapping trên một kiểu cho một phương thức không?

@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!"; 
    } 
} 

Trong kịch bản này, URL cho MyDebugPing là /foo/debug/ping. Tuy nhiên, tôi muốn nó là /debug/ping, có hiệu quả bỏ qua RequestMapping trên lớp.

Điều đó có khả thi không?

Trả lời

5

Chỉ cần xóa chú thích @RequestMapping khỏi lớp và sử dụng đường dẫn đầy đủ cho mỗi phương pháp riêng lẻ. Ví dụ.

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!"; 
    } 
} 

Nếu có nhiều phương pháp thì bạn có thể đơn giản di chuyển phương thức sang bộ điều khiển khác.

+1

Cảm ơn. Đó là kế hoạch của tôi B. Có khoảng một chục phương pháp, vì vậy tôi sẽ cố gắng tránh điều đó nếu có thể. –

+0

Tôi đã cập nhật câu trả lời của mình. Bạn có thể di chuyển phương thức ra khỏi lớp (ví dụ: trong cùng một gói để có thể truy cập vào các phương thức hiển thị được bảo vệ hoặc gói). Nó sẽ yêu cầu một số công việc mặc dù (thay đổi tư nhân để gói có thể nhìn thấy vv). –

Các vấn đề liên quan