Spring-数据源对象管理与容器

1.Druid数据源对象管理

  • 导入坐标
<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.11</version>
        </dependency>
  • 配置文件
    <!--    管理DruidDataSource对象-->
    <bean  class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql..cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="username" value="root"/>
        <property name="password" value="12345678"/>

    </bean>

2.c3p0数据源对象管理

  • 导入坐标(可以在maven仓库官网中搜素https://mvnrepository.com/
      <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
  • 配置文件(注意通过Ctrl+F12查看是否有构造方法注入,没有则通过setter注入,也可以自行百度用法)
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql..cj.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
        <property name="user" value="root"/>
        <property name="password" value="12345678"/>

    </bean>

3.加载配置文件

  • 开启context命名空间–(复制部分代码,要修改5个地方,都是修改成context)
<!--       1.开启context命名空间-->
<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命名空间,加载指定properties文件
    <!--    2.使用context空间加载properties文件-->
    <context:property-placeholder location="jdbc.properties"/>
  • 使用${ }读取加载的属性值
    <bean 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>
  • 注意配置文件环境变量和配置文件中的字段相同时,一般系统环境变量优先级大于配置文件,此时需要禁用系统变量
    <!--    2.使用context空间加载properties文件-->
    <context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
  • 加载多个配置文件中间用逗号隔开
    <!--    <context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>-->
    <context:property-placeholder location="jdbc.properties ,jdbc2.properties" system-properties-mode="NEVER"/>

或者使用通配符

    <context:property-placeholder location="*.properties " system-properties-mode="NEVER"/>

然而有个规范,就是前面要加classpath:

    <context:property-placeholder location="classpath:*.properties " system-properties-mode="NEVER"/>

要读取导入类路劲与jar包下的properties文件:

    <context:property-placeholder location="classpath*:*.properties " system-properties-mode="NEVER"/>


4.创建容器

  • 方式一:类路径加载配置文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  • 方式二:文件路径加载配置文件
        ApplicationContext ctx = new  FileSystemXmlApplicationContext("F:\\Java\\studynote\\后端\\SSM\\spring_10_container\\src\\main\\resources\\applicationContext.xml");
  • 加载多个配置文件
ApplicationContext ctx=new ClassPathXmlApplicationContext("bean1.xml","bean2.xml");

5.获取bean

  • 方式一:使用bean名称获取
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
  • 方式二:使用bean名称获取并指定类型
        BookDao bookDao = ctx.getBean("bookDao", BookDao.class);
  • 方式三:使用bean类型获取
        BookDao bookDao = ctx.getBean(BookDao.class);

6.容器

在这里插入图片描述

  • BeanFactory是顶层接口
  • ApplicationContext是常用接口
  • ConfigurableApplicationContext提供关闭容器功能
  • ClassPathXmlApplicationContext常用实现类

7.BeanFactory初始化(了解)

  • 类路径加载配置文件
 public static void main(String[] args) {
        Resource resource = new ClassPathResource("applicationContext.xml");
        BeanFactory bf = new XmlBeanFactory(resource);
        BookDao bookDao = bf.getBean("bookDao", BookDao.class);
        bookDao.save();

    }
  • BeanFactory创建完毕后,所有的bean均为延迟加载,相当于在xml配置文件里面添加lazy-init="true"的属性
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" lazy-init="true">
    </bean>


8.核心容器总结

bean相关

<bean
      id="bookDao" 											bean的ID
      name="dao booDaoImpl daoImpl"							bean的别名
      class="com.itheima.dao.impl.BookDaoImpl"				bean类型,静态工厂类,FactoryBean类
      scope="singleton"										控制bean的实例数量
      init-method="init"									生命周期初始化方法
      destory-method="destory"								生命周期销毁方法
      autowire="byType"										自动装配类型
      factory-method="getInstance"							bean工厂方法,应用于静态工厂或实例工厂
      factory-bean="com.itheima.factory.BookDaoFactory"		实例工厂bean
      lazy-init="true"										控制bean延迟加载
      />

依赖注入相关

<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
	<constructor-arg name="bookDao" ref="bookDao"/>								构造器注入引用类型
    <constructor-arg name="userDao" ref="userDao"/>
    <constructor-arg name="msg" value="WARN"/>									构造器注入简单类型
    <constructor-arg type="java.lang.String" index="3" value="WARN"/>			类型匹配与索引匹配
    <property name="bookDao" ref="bookDao"/>									setter注入引用类型
    <property name="userDao" ref="userDao"/>
    <property name="msg" value="WARN"/>											setter注入简单类型
    <propperty name="names">													setter注入集合类型
        <list>																	list集合
            <value>itcast</value>												集合注入简单类型
            <ref bean="dataSource"/>											集合注入引用类型
        </list>
    </propperty> 
</bean>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring容器中初始化JdbcTemplate对象,你可以按照以下步骤进行操作: 1. 首先,在你的Spring配置文件(通常是applicationContext.xml)中,配置数据(DataSource)。你可以使用Spring提供的内置数据,如BasicDataSource,或者使用其他第三方库提供的数据。 ```xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" /> <property name="username" value="username" /> <property name="password" value="password" /> </bean> ``` 2. 接下来,配置JdbcTemplate对象并将其与数据关联。可以使用`org.springframework.jdbc.core.JdbcTemplate`类来创建JdbcTemplate对象,并通过构造函数或setter方法注入数据。 ```xml <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> ``` 3. 确保你已经导入了Spring的JDBC相关依赖,以及数据库驱动程序的相关依赖。例如,如果你使用MySQL数据库,需要导入MySQL驱动程序的依赖。 ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> ``` 完成以上步骤后,Spring容器会在应用程序启动时自动初始化JdbcTemplate对象,并将其注入到需要使用的地方,例如DAO类中。你可以在需要的地方通过依赖注入(DI)来获取JdbcTemplate对象,然后使用它执行数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值