2022-09-30 数据源对象,容器

spring

数据源对象管理

DruidDataSource

  • 导入druid坐标
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.5</version>
</dependency>
  • 配置数据源对象作为spring管理的bean
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</bean>

ComboPooledDataSource

  • 导入坐标

mysql也要导入

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
</dependency>
  • 配置数据源对象作为spring管理的bean
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_db"/>
    <property name="user" value="root"/>
    <property name="password" value="123456"/>
</bean>

加载properties文件

  • 开启context命名空间
<?xml version="1.0" encoding="UTF-8"?>
<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
        ">
</beans>
  • 使用context命名空间,加载指定properties文件
<context:property-placeholder location="jdbc.properties"/>
  • 使用${}读取加载的属性值
<property name="name" value="${jdbc.driver}"></property>
  • 不加载系统属性
<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
  • 加载多个properties
<context:property-placeholder location="jdbc.properties,msg.properties" />
  • 加载所有properties文件
<context:property-placeholder location="*.properties"/>
  • 加载properties文件标准格式
<context:property-placeholder location="classpath:*.properties"/>
  • 从类路径或jar包中搜索并加载properties文件
<context:property-placeholder location="classpath*:*.properties"/>

容器

创建容器

  1. 类路径加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  1. 文件路径加载配置文件
ApplicationContext ctx = new FileSystemXmlApplicationContext("E:\\workspace\\blbl\\idea\\2022.09.30_container\\src\\main\\resources\\applicationContext.xml");
  1. 加载多个配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean1.xml","bean2.xml");

获取bean

  1. 使用bean名称获取
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
  1. 使用bean名称获取并指定类型
BookDao bookDao = ctx.getBean("bookDap",BookDao.class);
  1. 使用bean类型获取
BookDao bookDao = ctx.getBean(BookDao.class);

核心容器总结

容器相关

  1. BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载
  2. ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载
  3. ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能
  4. ApplicationContext接口常用初始化类
    • ClassPathXmlApplicationContext(常用)
    • FileSystemXmlApplicationContext

bean相关

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

依赖注入相关

构造器注入

<constructor-arg />

setter注入

<property />
posted @ 2022-09-30 10:39  LegendR  阅读(37)  评论(0)    收藏  举报