Задачка на Spring Framework
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Всем привет
Spring Framework — один из самых популярных фреймворков для Enterprise Java. По большому счету, Spring — это не просто фреймворк, а платформа для разработки и интеграции различных технологий.
С другой стороны, его технологическая сложность приводит к тому, что не просто сразу разобраться в его конфигурации, особенно для больших проектов.
На нашем последнем тренинге по Spring Framework(it-simulator.com/...3/osnovy-spring-framework) возникла интересная ситуация, когда один студент не сразу разобрался, как Spring загружает конфигурацию для задания.
Отсюда родилась интересная задача. Представим себе Spring приложение с тремя бинами:
@Component class Service { public Service(Repository rep){} } interface Repository {} @Component class DBRepository implements Repository {} @Component class XmlRepository implements Repository {}
Если вы используете Spring 4.3 и выше, то у вас в конструкторе класса Service сработает auto-wiring, но Spring не сможет подобрать подходящий бин, так как у нас два бина реализуют интерфейс Repository. И в конце концов мы получим Exception.
Но не зря же говорят, что в основе Spring лежит annotation-driven development. Итак, нужно, НЕ меняя кода, а лишь добавляя аннотации, найти все возможные варианты, чтобы сработал auto-wiring и один из бинов Repository был передан в конструктор.
Всем удачи!
40 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів