Да: Spring будет повторно использовать компонент, когда вы устанавливаете область действия на что-то другое (то есть вы не должны использовать прототип, сеанс или запрос). Так что хитрость заключается в использовании двух бобов: одного, в котором есть все, что не меняется. И один компонент, который присоединен к сеансу / запросу и имеет только одну зависимость: первый компонент.
Spring не может сделать это за вас, поскольку не существует правила, когда бин достаточно «статичен» - вы, как разработчик, должны это определить.
[EDIT] Вы должны собрать статические части компонента (те, которые не изменятся со временем) в DAO / компоненте службы. Затем используйте этот боб в вашем @Component
-> одном поиске.
Чтобы ускорить поиск, прикрепите имя к компоненту. Для поиска на основе типов Spring должен выполнять итерацию по всему контексту (поскольку могут совпадать несколько bean-компонентов), в то время как поиск на основе имени / идентификатора - это просто поиск на карте.
Чтобы дать бину имя, укажите его в @Context
или используйте @Bean(name="name")
. Чтобы сообщить Spring, какой компонент использовать из контекста, используйте @Resource(name)
или @Qualifier("businessObject")
.