Ну вот например:
@Configuration
@ImportResource("classpath:META-INF/ann-config.xml")
@ComponentScan(basePackageClasses = {MyController.class})
public class Initializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new
AnnotationConfigWebApplicationContext();
ctx.register(WebConfig.class);
ctx.setConfigLocation("classpath:META-INF/ann-config.xml");
servletContext.addListener(new ContextLoaderListener(ctx));
ctx.setServletContext(servletContext);
ServletRegistration.Dynamic servlet =
servletContext.addServlet("dispather", new DispatcherServlet(ctx));
servlet.addMapping("/");
servlet.setLoadOnStartup(1);
}
}
Собственно вопрос: В чем слабые стороны такого подхода по сравнению с XML конфигурацией? Что натолкнуло на поднятия темы? В одной компании, один из специалистов в авторитетной должности архитектора, намекнул что это считается плохим тоном. На вопрос Кем считается? ответ Java-сообществом. Что скажете?
Есть такой термин "hard code" (хардкод по нашему). Мало кто будет утверждать, что это не плохо (есть варианты, когда оно нужно, но это достаточно редкие случаи).
Вот объединение конфигурации и кода - это оно и есть.
Давай рассмотрим самое очевидное - необходимость перекомпиляции после внесения изменений в конфигурацию. Потянем за ниточку, поразматываем клубок:
и т.д.
Самый главный недостаток в сравнении с xml - необходимость повторной компиляции при изменении конфигурации. А в остальном - вопрос личных предпочтений. Я люблю сочетание из аннотаций и xml.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости