Я использую контроллеры Spring MVC, и я хотел бы сделать некоторые дополнительные методы отображения запросов, доступные во время разработки. Я могу сделать это с помощью профилей пружины:По умолчанию Весна боба, когда профиль нет
@Controller
@Profile("!dev")
public class DefaultController {
}
@Controller
@Profile("dev")
public class DevController extends DefaultController {
}
Но в идеале, я предпочел бы не загрязнять код с аннотациями со ссылкой на „производстве классов Dev“ профиль.
Я думаю, возможно, это возможно с использованием Первичной аннотации, но я не могу заставить ее работать. This post кажется, что это должно работать:
@Controller
public class DefaultController {
}
@Controller
@Profile("dev")
@Primary
public class DevController extends DefaultController {
}
Но когда я делаю это, Spring пытается загрузить оба контроллера при запуске под «Dev» профиль, и не с
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0'
...
There is already 'defaultController' bean method
Это то, что я хочу сделать возможным? Если да, то как я могу это сделать?
Да, это работает. Я взял весь код из 'DefaultController' и поместил его в' AbstractController'. И 'DefaultController', и' DevController' теперь расширяют 'AbstractController'. Это все еще не очень чисто. Возможно, я просто скопирую и вставлю код из 'DefaultController' в' DevController' или просто придерживаюсь моего исходного '@Profile ("! Dev ")'. –
ОК, спасибо. отметьте этот вопрос как ответ. –