• druid+spring配置


    web.xml配置

        <!-- Druid,监控数据库,以及WEB访问连接信息 -->  
    <!-- 配置好后访问 http://ip:port/projectName/druid/index.html --> 
    <filter>  
        <filter-name>DruidWebStatFilter</filter-name>  
        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>  
        <init-param>  
            <param-name>exclusions</param-name>  
            <param-value>*.js,*.gif,*.jpg,*.png,*.ico,*.css,*.ico,*.jsp,*.eot,*.woff,/druid/*,/download/*</param-value>  
        </init-param>  
         <!-- 监控单个url调用的sql列表 -->
        <init-param>
            <param-name>profileEnable</param-name> 
            <param-value>true</param-value>
        </init-param>
    
        <!-- 可以关闭session统计功能 -->
        <!-- <init-param>
            <param-name>sessionStatEnable</param-name> 
            <param-value>false</param-value>
        </init-param> -->
    </filter>  
    <filter-mapping>  
        <filter-name>DruidWebStatFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
    
    <!-- 配置 Druid 监控信息显示页面   该配置可以访问监控界面,配置好后,访问http://ip地址:端口号/项目名/druid/index.html-->  
    <servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
         <init-param>  
           <!-- 允许清空统计数据 -->  
           <param-name>resetEnable</param-name>  
           <param-value>true</param-value>  
        </init-param>  
      
      <!--   ip过滤规则
            (1)deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。
            (2)如果allow没有配置或者为空,则允许所有访问
            
            ip配置格式
              <IP>
              或者
              <IP>/<SUB_NET_MASK_size>
            其中
              128.242.127.1/24
            24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配。
            不支持IPV6
            由于匹配规则不支持IPV6,配置了allow或者deny之后,会导致IPV6无法访问。
         -->            
         
        <init-param>
           <!-- 访问IP白名单 -->
           <param-name>allow</param-name>
           <param-value>192.168.1.253</param-value>
        </init-param>
        <init-param>
           <!-- 访问IP黑名单 --> 
            <param-name>deny</param-name> 
            <param-value>192.168.1.252</param-value>
        </init-param>
        <init-param>  
            <!-- 用户名 -->  
            <param-name>loginUsername</param-name>  
            <param-value>druid</param-value>  
        </init-param>  
        <init-param>  
            <!-- 密码 -->  
            <param-name>loginPassword</param-name>  
            <param-value>druid</param-value>  
        </init-param>  
    </servlet>
    
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>

    数据源配置

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 
            <property name="driverClassName" value="${database.className}" />
            <property name="url" value="${database.url}" />
            <property name="username" value="${database.username}" />
            <property name="password" value="${database.password}" />
            
            <property name="maxActive" value="20" />
            <property name="initialSize" value="1" />
            <property name="maxWait" value="60000" />
            <property name="minIdle" value="1" />
    
            <property name="validationQuery" value="SELECT 1" /> <!-- 验证连接是否成功, SQL SELECT 指令至少要返回一行  (测试/验证连接池连接的SQL语句也因数据库而异)-->
            <property name="testOnBorrow" value="false" /> <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 --> 
            <property name="testOnReturn" value="false" /> <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
            <property name="minEvictableIdleTimeMillis" value="300000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
             <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
            <property name="testWhileIdle" value="true" />
            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
            <property name="timeBetweenEvictionRunsMillis" value="30000" />
            <property name="maxOpenPreparedStatements" value="20" /><!-- 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。 -->
            <!-- 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。 -->
            <property name="poolPreparedStatements" value="true" />
            <!-- 指定每个PSCache连接上PSCache的大小 -->
            <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
            
            <!-- 配置监控统计拦截的filters 去掉后监控界面sql无法统计
                开启web监控、开启sql防火墙 -->
            <property name="filters" value="stat,wall"></property>
        </bean>
    
        <!-- 开启事务注解驱动 --> 
        <tx:annotation-driven transaction-manager="transactionManager" />
        
        <bean id="transactionManager" 
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <bean id="transactionInterceptor"
            class="org.springframework.transaction.interceptor.TransactionInterceptor">
            <!-- 事务拦截器需要依赖注入一个事务管理器 -->
            <property name="transactionManager" ref="transactionManager" />
            <!-- 定义事务传播属性 -->
            <property name="transactionAttributes">
                <props>
                    <prop key="*">PROPAGATION_REQUIRED</prop>
                </props>
            </property>
        </bean>

    配置_Druid和Spring关联监控配置

    <!-- 开启spring方法调用监控 -->
        <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"></bean>
        <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
           <property name="patterns">
               <list>
                   <value>cn.zsmy.palmdoctor.biz.web.impl.*</value>
                   <value>cn.zsmy.palmdoctor.action.*</value>
                   <value>cn.zsmy.palmdoctor.action.web.impl.*</value>
                   <value>cn.zsmy.palmdoctor.doctor.web.impl.*</value>
                   <value>cn.zsmy.palmdoctor.patient.web.impl.*</value>
                   <value>cn.zsmy.palmdoctor.sys.web.impl.*</value>
                   <value>cn.zsmy.palmdoctor.web.impl.*</value>
               </list>
           </property>
        </bean>
        
        <aop:config>
                <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
        </aop:config>    
  • 相关阅读:
    url传递参数带 + ,解决办法
    操作系统——内存地址重定位
    算法——二分查找变形题
    Java——代码性能优化
    maven——添加插件和添加依赖有什么区别?
    JavaWeb——Servlet如何调用线程池中的线程?
    「ZJOI2016」小星星
    [十二省联考2019]字符串问题
    [十二省联考2019]春节十二响
    [十二省联考2019]异或粽子
  • 原文地址:https://www.cnblogs.com/shihaiming/p/5981789.html
Copyright © 2020-2023  润新知