2013-06-13 31 views
6

Tôi có một ứng dụng web chạy trong Tomcat và sử dụng Spring MVC để xác định bộ điều khiển và ánh xạ. Tôi có lớp học sau:Ứng dụng web MVC của Spring - bật/tắt bộ điều khiển từ thuộc tính

@Controller("api.test") 
public class TestController { 

     @RequestMapping(value = "/test", method = RequestMethod.GET) 
     public @ResponseBody String test(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { 
      // body 
     } 
} 

Tôi muốn đặt bộ điều khiển này và đường dẫn ".../test" theo thuộc tính được xác định ở đâu đó (ví dụ: tệp). Nếu thuộc tính là, giả sử, sai, tôi muốn ứng dụng hoạt động như thể đường dẫn đó không tồn tại và nếu nó đúng, hoạt động bình thường. Tôi có thể làm cái này như thế nào? Cảm ơn.

Trả lời

12

Nếu bạn đang sử dụng Spring 3.1+, làm cho các bộ điều khiển chỉ có trong hồ sơ kiểm tra:

@Profile("test") 
class TestController { 
    ... 
} 

sau đó kích hoạt rằng hồ sơ của ví dụ chuyển thuộc tính hệ thống sau tại khởi động Tomcat:

-Dspring.profiles.active=test 

Để vô hiệu hóa bộ điều khiển, chỉ cần bỏ qua cấu hình đã cho.

+0

Có, điều này hoạt động tốt. Cảm ơn. –

2

Một cách khác để làm điều đó, có thể là cách đơn giản hơn để thực hiện việc này, là sử dụng chú thích @ConditionalOnProperty với bộ điều khiển RestController/Controller của bạn.

@RestController("api.test") 
    @ConditionalOnProperty(name = "testcontroller.enabled", havingValue = "true") 
public class TestController { 

     @RequestMapping(value = "/test", method = RequestMethod.GET) 
     public String test(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { 
      // body 
     } 
} 

Tại đây thuộc tính testcontroller.enabled trong thuộc tính yml của bạn nói, nếu không được đặt thành true, TestController Bean sẽ không bao giờ được tạo.

Mẹo: Tôi đề nghị bạn sử dụng RestController thay vì Controller vì nó có @ResponseBody được thêm theo mặc định. Bạn có thể sử dụng @ConditionalOnExpression để đến cùng một giải pháp nhưng chậm hơn một chút do đánh giá SpEL.

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