Поскольку этот вопрос, очевидно, является образовательным, я постараюсь дать как можно более подробный ответ:
Как только вы поймете c вещь о весне, что все автомагистраль волхвы c происходит только с bean-компонентами, которые управляются пружиной.
Итак:
- Ваши контроллеры должны управляться пружиной
- Ваша служба должна управляться пружиной
- Ваши DAO должны управляться весной
В противном случае автоматическое подключение не будет работать, я не могу больше это подчеркнуть.
Теперь рассмотрим контекст приложения как один глобальный реестр всех бобов. По умолчанию бины являются синглетонами (одноэлементная область в терминах весны), что означает, что в контексте приложения существует только один объект (экземпляр) этого бина.
Актуальное подключение означает, что bean (управляется Spring) - контроллер в вашем случае имеет зависимости, которые Spring может внедрить, просматривая этот глобальный реестр, получая соответствующий bean-компонент и устанавливая поле данных, для которого вызывается аннотация @Autowired
.
Итак, если у вас есть два контроллера (опять же, оба управляются весной), вы можете:
@Controller
public class ControllerA {
@Autowired
private SchoolService sm;
}
@Controller
public class ControllerB {
@Autowired
private SchoolService sm;
}
В этом случае тот же экземпляр школьной службы будет введен в два разных контроллера, поэтому вы должны хорошо go.