2013-06-13 25 views
6

Tomcat'te çalışan bir web uygulamasına sahibim ve denetleyicileri ve eşlemeleri tanımlamak için Spring MVC'yi kullanıyorum. Bu denetleyici ve yerde tanımlanmış bir özellik (örneğin dosyası) göre mevcut ".../test" yolunu yapmak istiyorumSpring MVC web uygulaması - denetleyicinin mülkten etkinleştirilmesi/devre dışı bırakılması

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

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

: Aşağıdaki sınıf var. Özellik, yanlış, söylerseniz, bu yolun olmadığı ve doğruysa, normal davranmak için, app davranmasını istiyorum. Bunu nasıl yapabilirim? Teşekkürler.

cevap

12

Eğer Spring 3.1+ kullanırken, yalnızca deney profilinde mevcut denetleyicisi yapmak:

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

daha sonra örneğin tarafından bu profili sağlamak Aşağıdaki sistem özelliğini Tomcat önyüklemesinde geçirme: denetleyiciyi devre dışı bırakmak için verilen profili çıkarmanız yeterlidir.

+0

Evet, bu iyi çalışıyor. Teşekkürler. –

2

Bunu yapmanın başka bir yolu, bunu yapmanın daha basit bir yolu olabilir, @ConditionalOnProperty Açıklama, RestController/Denetleyici ile kullanmaktır. true ayarlanmamış eğer yml özelliklerinde

@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 
     } 
} 

İşte testcontroller.enabled mülkiyet derler, TestController Bean asla oluşturulur.

İpucu: Denetleyicinin yerine RestController'ı kullanmanızı öneririm, varsayılan olarak @ResponseBody eklenmiştir. Aynı çözüme ulaşmak için @ConditionalOnExpression'ı kullanabilirsiniz ancak SpEL değerlendirmesinden dolayı biraz daha yavaştır.

İlgili konular