ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

spring与多种数据源的配置 合辑

2022-03-25 21:01:27  阅读:186  来源: 互联网

标签:xml web 数据源 数据库 合辑 druid param context spring


主要分为三步:

1、引入properties配置文件

2、配置数据源

3、配置jdbc模板

下面是实例:

 

1、spring与jdbc

 <!--自动扫描包-->
<context:component-scan base-package="cn.com.sise.dao"/>

<!-- 0、引入dbc.properties属性文件 -->
<context:property-placeholder location="classpath:jdbc/jdbc.properties"/>

<!-- 1、使用org.springframework.jdbc.datasource.DriverManagerDataSource
说明:DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用。 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

<!-- 2配置Jdbc模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 默认必须使用数据源 -->
<property name="dataSource" ref="dataSource"/>
</bean>

2、spring与dbcp

<!--    1 扫描包-->
<context:component-scan base-package="cn.com.sise"/>
<!-- 2 引入数据库配置文件-->
<context:property-placeholder location="classpath:dbcp/dbcp.properties"/>
<!-- 3 配置数据源-->
<bean id="dataSource2" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 4 配置dbcp模板-->
<bean id="jdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource2"/>
</bean>

3、spring与c3p0


<!-- 1 扫描包-->
<context:component-scan base-package="cn.com.sise"/>
<!-- 2 引入数据库配置文件-->
<context:property-placeholder location="classpath:c3p0/c3p0.properties"/>
<!-- 3 配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 4 配置dbcp模板-->
<bean id="jdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>

4、spring与druid   通常应用在javaweb,

介绍:(我也是刚刚接触)

  Druid阿里巴巴开发的号称为监控而生的数据库连接池,目前最好的数据库连接池。

特点:

1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

如图:

 

 

 

 

一、xml配置四个步: 

1、引入properties配置文件

2、配置数据源

3、配置jdbc模板

4、配置SQL监控

 

二、详细:

1、引入druid的依赖

2、xml配置

<context:component-scan base-package="cn.com.sise"/>

<!-- 1、数据源配置 -->
<context:property-placeholder location="classpath:druid.properties"/>

<!--2、配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
<property name="driverClassName" value="${jdbc.driver}" />
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 初始化连接大小 -->
<property name="initialSize" value="1"/>
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="10"/>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="1"/>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="10000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->
<property name="filters" value="stat" />
<!--监控SQL语句-->
<property name="proxyFilters">
<list>
<ref bean="stat-filter"/>
</list>
</property>
</bean>

<!--3、配置SQL监控-->
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
<!--慢SQL记录 缺省值为3000,也就是3秒-->
<property name="slowSqlMillis" value="5000"/>
<property name="logSlowSql" value="true"/>
<!--SQL合并配置-->
<property name="mergeSql" value="true"/>
</bean>

<!-- 4、配置Jdbc模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 默认必须使用数据源 -->
<property name="dataSource" ref="dataSource"/>
</bean>

3、配置web.xml

<!-- 1、监控SQL情况 -->
<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>false</param-value>
</init-param>
<!--用户名-->
<init-param>
<param-name>loginUsername</param-name>
<param-value>admin</param-value>
</init-param>
<!--密码-->
<init-param>
<param-name>loginPassword</param-name>
<param-value>admin</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

<!--2、连接池启用Web监控统计功能start -->
<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,*.css,*.ico,/druid/*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!--3、初始化参数-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:DruidBean.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

<!--4、配置首页-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

 

**********************************************************************************************************************************************************************************************************************************

了解:

Web.xml配置详解之context-param

<context-param>  
<param-name>contextConfigLocation</param-name>  
<param-value>contextConfigLocationValue></param-value>  
</context-param>  

作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。

param-name 设定上下文的参数名称。必须是唯一名称

param-value 设定的参数名称的值

 

  • 初始化过程:
    1. 在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>。
    2. 接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。
    3. 接着容器会将读取到<context-param>转化为键值对,并交给ServletContext。
    4. 容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。
    5. 在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。
    6. 得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。

由上面的初始化过程可知容器对于web.xml的加载过程是context-param >> listener  >> fileter  >> servlet

 

 

 

标签:xml,web,数据源,数据库,合辑,druid,param,context,spring
来源: https://www.cnblogs.com/huangheyuan/p/16056676.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有