• 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  要想成为延迟加载,只需要按照如下方式进行配置

  • 相关阅读:
    Linux动态库与静态库
    Qt跨平台(统信UOS)各种坑解决办法
    Android 动画和过渡
    聚星文社工具【聚星文社】Ai小说推文一键生成工具大更新:一键出图、一键改文、一键关键帧、MJ+SD推文神器
    使用Live Chat促进业务销售的惊人技巧
    Scatter plot with histograms
    企业电子招标采购系统项目说明+开发类型+解决方案+功能描述+二次开发+spring cloud
    NextJs 数据篇 - 数据获取 | 缓存 | Server Actions
    Docker 容器监控之CAdvisor+InfluxDB+Granfana
    UML建模语言、设计原则、设计模式
  • 原文地址:https://blog.csdn.net/yirenyuan/article/details/127692604