Я работаю над профилированием унаследованного приложения с использованием Spring AOP и хочу получить некоторые данные о решении, которое мне нужно принять.
Это то, что я сделал до сих пор:
Я создал код и конфигурацию с помощью Spring AOP, которая помогла бы мне профилировать bean-компоненты, управляемые контейнером Spring.
При профилировании слоя dao я обнаружил, что в устаревшем приложении используется фреймворк c3p0, в частности класс ComboPooledDataSource
. Поскольку этот класс является последним классом, я больше не могу работать с Spring AOP, поскольку cglib не может создавать прокси для конечных классов!
Столкнувшись с этим препятствием, я планирую использовать технику ткачества времени компиляции.
Я хочу знать, является ли это правильным решением или есть другие способы преодоления этой проблемы с помощью самой Spring AOP. Пожалуйста, дайте мне знать.
Информация о конфигурации:
<bean id="sample_dao" class="com.foo.SampleDaoImpl">
<property name="dataSource" ref="sample_data_source"/>
..
<property name="sampleProperty" ref="sample_bean"/>
</bean>
<bean id="sample_data_source" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" depends-on="some_sample">
<property name="driverClass" value="${driverClassName}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="initialPoolSize" value="1"/>
<property name="maxPoolSize" value="4"/>
<property name="acquireIncrement" value="1"/>
<property name="preferredTestQuery" value="select 1 from sample_table"/>
<property name="idleConnectionTestPeriod" value="30"/>
<property name="testConnectionOnCheckin" value="true"/>
<property name="acquireRetryAttempts" value="3"/>
<property name="connectionCustomizerClassName" value="com.foo.SampleConnectionCustomizer"/>