2016-11-02 4 views
2

У меня есть класс RestController, который аннотируется с помощью @RestController и работает правильно. но в ситуации я должен добавить один из них вручную. Я думаю, что я могу определить компонент в Spring конфигурации, поэтому я могу определить RestService, но как?Как я могу определить RestController вручную весной?

Например:

@Configuration 
public class Config ..... { 

    ............ 

    @RestController 
    public MyRestService myRestService() { 
     if(shouldUseTypeA){ 
      return new MyRestService<TypeA>(myParams); 
     }else{ 
      return new MyRestService<TypeB>(myParams);    
     } 
    } 
} 
+0

Аннотировать «MyRestService» с помощью '@ RestController' и метода просто с помощью' @ Bean'. –

+0

Почему бы не использовать @responsebody для ваших методов. –

+0

@RamanaManoj Я использовал, Проблема в другом – Pooya

ответ

1

Если shouldUseTypeA является то, что вы знаете, до запуска приложения, использовать его в качестве профиля Spring и инстанцирует правильный контроллер в соответствии с активированным профилем.

@Configuration 
public class Config ..... { 

    // Type A 
    @Profile("shouldUseTypeA") 
    @RestController 
    public class TypeAService extends MyRestService<TypeA>(myParams){} 

    // Otherwise type B 
    @Profile("!shouldUseTypeA") 
    @RestController 
    public class TypeBService extends MyRestService<TypeB>(myParams){} 
} 
Смежные вопросы