Ну я сразу скажу, что только начинаю изучать Spring, так что не судите очень строго. Поймал себя на том, что пишу в файле конфигурации одно и то же.
<bean id="sorttask"
class="Arhitecture.Sort.Sort_Task"
factory-method="getTaskInstance" />
<bean id="timer"
class="Arhitecture.ClockWork"
scope="prototype"/>
<bean id="bubblesort"
class="Solutions.Bubble_Sort">
<constructor-arg ref="sorttask"/>
</bean>
<bean id="bubbleclock"
class="Arhitecture.ClockWork"/>
<bean id="bubblesortwrapper"
class="Arhitecture.Sort.Sort_SolutionWrapper">
<constructor-arg index="0" ref="bubblesort"/>
<constructor-arg index="1" ref="bubbleclock"/>
</bean>
<!--Feel like doing the same thing-->
<!--Need to find a way like <context:component-scan> and for each solution bean do new wrapper (solution, timer) -->
<bean id="mergesort"
class="Solutions.Sort_by_Merge">>
<constructor-arg ref="sorttask"/>
</bean>
<bean id="mergeclock"
class="Arhitecture.ClockWork"/>
<bean id="mergesortwrapper"
class="Arhitecture.Sort.Sort_SolutionWrapper">
<constructor-arg index="0" ref="mergesort"/>
<constructor-arg index="1" ref="mergeclock"/>
</bean>
<aop:config>
<aop:pointcut id="runBubble" expression="execution(* Solutions.Bubble_Sort.run(..))"/>
<aop:aspect ref="bubbleclock">
<aop:before pointcut-ref="runBubble" method="clockStart"/>
<aop:after pointcut-ref="runBubble" method="clockEnd"/>
</aop:aspect>
<aop:aspect ref="bubblesortwrapper">
<aop:after pointcut-ref="runBubble" method="setCorrectness"/>
</aop:aspect>
</aop:config>
В конфигурации аспекта придется добавлять те же строки для других id.
Чтобы не повторяться, в голову приходит использовать <context:component-scan base-package="Solutions"/>, но я не придумал как создать для каждого отсканеного bean новый wrapper.
Подскажите, пожалуйста где искать решение.
Потом можно получить ссылки на все компоненты класса SolutionWrapper из объекта контекста, это я разобрался как сделать.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники