我正在使用 Spring AOP 分析遗留应用程序,我想围绕我需要做出的决定获取一些数据点。
这是我到目前为止所做的:我使用 Spring AOP 创建了代码和配置,这将帮助我分析由 Spring 容器管理的 bean。
在分析 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"/>