【问题标题】:Spring Interceptor for BasicDataSourceBasicDataSource 的 Spring 拦截器
【发布时间】:2012-02-21 12:17:08
【问题描述】:

我使用以下配置连接到我的数据库(一个 mysql,一个 oracle)。我想知道是否有任何方法可以配置 spring 拦截器以允许我审核对数据库的访问和请求的性能?感谢您的输入。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>   
<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    <property name="searchContextAttributes" value="true"/>
    <property name="contextOverride" value="true"/>
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="locations">
        <list>
            <value>classpath:database.properties</value> 
            <value>${config}</value>
        </list>
    </property>
</bean>

<!-- EntityManagerFactory -->
<bean id="userEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitManager" ref="userPersistenceUnitManager"/> 
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect" />
    </property>
    <property name="jpaProperties">
        <props> 
            <prop key="eclipselink.logging.level">FINE</prop>
            <prop key="eclipselink.logging.timestamp">true</prop>
            <prop key="eclipselink.logging.session">true</prop>
            <prop key="eclipselink.logging.thread">true</prop>
            <prop key="eclipselink.logging.exceptions">true</prop>
            <prop key="eclipselink.weaving">false</prop>
        </props>
    </property>
</bean>

<!-- See http://commons.apache.org/dbcp/configuration.html  
-->
<bean id="userDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <property name="url" value="${database.url}"/> 

    <property name="username" value="${database.username}"/> 
    <property name="password" value="${database.password}"/> 

    <!-- performance tuning -->
    <property name="initialSize" value="{database.minConnections}" />
    <property name="maxActive" value="{database.maxConnections}" /> 
    <property name="maxIdle" value="10"/>
    <property name="minIdle" value="1"/>

    <!-- The main purpose for the validation here is to avoid reusing a
         expired DB connection -->
    <property name="validationQuery" value="SELECT 1"/>
    <property name="testOnBorrow" value="true"/>
    <property name="testWhileIdle" value="false"/>
    <property name="testOnReturn" value="false"/>
</bean>

<bean id="userPersistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
    <property name="persistenceXmlLocations">
        <list>
            <value>classpath:META-INF/user_persistence.xml</value>
        </list>
    </property>
    <property name="defaultDataSource" ref="userDataSource"/>
</bean>

【问题讨论】:

    标签: spring-mvc datasource eclipselink interceptor entitymanager


    【解决方案1】:

    这在技术上与 Spring 无关,有几个 DataSource 装饰器可以完成这项工作:

    【讨论】:

    • 感谢@Tomasz,如果可能的话,真的在寻找拦截器。
    猜你喜欢
    • 2018-08-09
    • 2014-05-19
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2018-03-05
    • 2019-04-27
    • 1970-01-01
    相关资源
    最近更新 更多