• Spring(五)Spring 管理第三方Bean和核心容器


    一、Spring 管理第三方bean

    1. 案例:数据源对象管理

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    6. <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    7. <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
    8. <property name="user" value="root"/>
    9. <property name="password" value="root"/>
    10. bean>
    11. beans>

    2. 加载properties文件

    (1)开启 context 命名空间

    (2)使用 context 空间加载 properties 文件

    (3)使用属性占位符【${}】读取 properties 文件中的属性

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="
    6. http://www.springframework.org/schema/beans
    7. http://www.springframework.org/schema/beans/spring-beans.xsd
    8. http://www.springframework.org/schema/context
    9. http://www.springframework.org/schema/context/spring-context.xsd
    10. ">
    11. <context:property-placeholder location="classpath*:*.properties" system-properties-mode="NEVER"/>
    12. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    13. <property name="driverClassName" value="${jdbc.driver}"/>
    14. <property name="url" value="${jdbc.url}"/>
    15. <property name="username" value="${jdbc.username}"/>
    16. <property name="password" value="${jdbc.password}"/>
    17. bean>
    18. <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
    19. <property name="name" value="${jdbc.driver}"/>
    20. bean>
    21. beans>

     二、核心容器

    1. 容器的创建方式

    2. 获取 bean 的方式

    1. public class App {
    2. public static void main(String[] args) {
    3. //1.加载类路径下的配置文件
    4. ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    5. //2.从文件系统下加载配置文件
    6. // ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\\CODE\\heima\\spring_10_container\\src\\main\\resources\\applicationContext.xml");
    7. // BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    8. // BookDao bookDao = ctx.getBean("bookDao",BookDao.class);
    9. BookDao bookDao = ctx.getBean(BookDao.class);
    10. bookDao.save();
    11. }
    12. }

    3. 容器类层次结构

    4. BeanFactory

    1. public class AppForBeanFactory {
    2. public static void main(String[] args) {
    3. ClassPathResource resource = new ClassPathResource("applicationContext.xml");
    4. XmlBeanFactory factory = new XmlBeanFactory(resource);
    5. BookDao bookDao = factory.getBean(BookDao.class);
    6. bookDao.save();
    7. }
    8. }
    如果不去获取 bean 对象,打印会发现:
    (1)BeanFactory  是延迟加载,只有在获取 bean 对象的时候才会去创建
    (2)ApplicationContext  是立即加载,容器加载的时候就会创建  bean  对象
    (3)ApplicationContext  要想成为延迟加载,只需要按照如下方式进行配置

  • 相关阅读:
    vue3 集成 tailwindcss
    uni-app 背景音频 熄屏或者退回桌面之后不在播放
    云服务器数据安全保障措施看这里!
    性能测试fangan
    ubuntu无法使用man
    Interactive Tools Recommendation System integrating QT/ROS /Pytorch
    Android rom开发:9.0系统上实现4G wifi 以太网共存
    【大数据】Flink 详解(七):源码篇 Ⅱ
    QT(37)-mosquitto-MQTT客户端
    Django 表单处理:从前端到后台的全流程指南
  • 原文地址:https://blog.csdn.net/yirenyuan/article/details/127692604