Spring中整合第三方bean(XML配置)

1 Spring 中管理第三方 bean

1.1 实现对第三方 bean 的管理

在 web 开发中,数据源是经常用到的东西,我们的数据最终需要存储到数据库中,而在使用数据库的时候,通常不会直接使用 JDBC 开发,而是引入数据库连接池的概念来优化,因此就会使用到一些第三方的软件,如 Druid、C3P0 等等。

1.1.1 依赖准备

项目使用的 maven 构建,第三方的坐标如下,可到 maven 仓库中寻找自己需要的版本https://mvnrepository.com/


<dependency>
  <groupId>com.alibabagroupId>
  <artifactId>druidartifactId>
  <version>1.2.20version>
dependency>

<dependency>
  <groupId>c3p0groupId>
  <artifactId>c3p0artifactId>
  <version>0.9.1.2version>
dependency>
<dependency>
  <groupId>mysqlgroupId>
  <artifactId>mysql-connector-javaartifactId>
  <version>8.0.28version>
dependency>

说明:要想正常的使用数据库,还需要导入 MySQL 的驱动 jar 包,但是会存在一个现象:
1)Druid 没有导入 MySQL 驱动 jar 包时也能正常的打印数据库连接池的信息;
2)C3P0 没有导入 MySQL 驱动 jar 包的时候不能正常建立数据库连接池;
3)原因是:Druid 在建立数据库连接池的时候没有加载驱动,而 C3P0 加载了驱动,但是后续想要正常的使用,都需要导入 MySQL 的驱动 jar 包。

1.1.2 具体配置示例


<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
  <property name="url" value="http://localhost:3306/spring_db"/>
  <property name="username" value="root"/>
  <property name="password" value="root"/>
bean>


<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
  <property name="jdbcUrl" value="http://localhost:3306/spring_db"/>
  <property name="user" value="root"/>
  <property name="password" value="root"/>
  <property name="maxPoolSize" value="100"/>
bean>

1.2 使用配置文件配置 bean

在 1.1 中,直接在标签中写死参数的名称,是不利于维护的,比较好的做法是,将这些参数提取出来,放在配置文件中,然后在标签中引用配置文件的内容,当需要更改这些信息的时候,我们只需要修改配置文件中的内容,就可以达到所有标签内容同步修改的效果。

(1)bean 对象配置文件


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">

    
    

    
    

    
    
    
    <context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
    
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <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>

    
    <bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="100"/>
    bean>
beans>
  • 可以添加配置文件,然后动态获取参数信息来配置相关的 bean;
  • 动态获取参数可以更好的管理我们的配置信息,当配置参数发生改变是,只需要改变 properties 文件中的信息即可;

(2)参数信息文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=root

2 Spring 中的核心容器

Spring 的比较重要的理念就是将 bean 对象交给容器管理;因此管理和获取 bean 是一个十分重要的内容。

2.1 容器的创建

两种方式,都是基于配置文件的,不同的是两个方法使用的参数不同

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext ctx1 = new FileSystemXmlApplicationContext("C:\\code\\workspace_java\\spring-base\\spring-datasource\\src\\main\\resources\\applicationContext.xml");

1)ClassPathXmlApplicationContext:类路径,相对路径,常用,推荐使用;
2)FileSystemXmlApplicationContext:从当前系统文件目录中获取,绝对路径,不推荐使用,可移植性差;

2.2 bean 对象的获取

常用的有三种方式,如下
Spring中整合第三方bean(XML配置)_第1张图片
1)参数是 String 字符串:根据 xml 配置的 id 属性来辨别,但是得到的类型的 Object,需要手动强转;
2)参数是字节码文件:直接传入相应的字节码文件,按类型获取;但是需要注意如果容器中该种类型的 bean 不唯一,则会报错;
3)参数是字符串和字节码文件:相比于第一种,不用强制转换,但是参数会多一个。


最后:需要知道,容器的最上层接口是 BeanFactory
Spring中整合第三方bean(XML配置)_第2张图片

你可能感兴趣的:(Java学习,spring)