Spring AOP を使用してレガシー アプリケーションのプロファイリングに取り組んでおり、必要な決定に関するデータ ポイントを取得したいと考えています。
これは私がこれまでに行ったことです。Spring コンテナーによって管理されている Bean のプロファイルを作成するのに役立つ Spring AOP を使用してコードと構成を作成しました。
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"/>