• 3、IoC 之Bean概述


    3、IoC 之Bean概述

    3.1、Bean 命名

    Bean 在容器内被封装成 BeanDefinition 类,具体内容可访问 官方文档 进行深入了解

    bean命名约定为小驼峰式(如 accountManager、accountService、userDao、loginController)

    通过类路径中的组件扫描,基本上采用简单的类名并将其初始字符转换为小写。但是,特殊情况下,当有多个字符并且第一个和第二个字符都是大写时,原始大小写将被保留。这些规则与java.beans.Introspector.decapitalize(Spring在这里使用的规则)所定义的规则相同。

    3.2、Bean 实例化

    • 通常,容器通过反射调用bean的构造器来实例化,等效于 new
    • 在不太常见的情况下,容器调用类上的工厂方法来创建 Bean。从调用工厂方法返回的对象类型可以是同一类,也可以是完全另一个类

    ① 构造函数进行实例化

    Bean类:

    package hom.wang.vo;
    public class ExampleBean {
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4

    xml 定义Bean:

    <beans>
        
        <bean id="exampleBean" class="hom.wang.vo.ExampleBean"/>
    beans>
    
    • 1
    • 2
    • 3
    • 4

    ② 静态工厂方法进行实例化

    通过 factory-method 调用静态工厂方法,返回一个 Bean 实例。

    Bean类:

    package hom.wang.vo;
    public class ExampleBean {
        
        private static ExampleBean exampleBean = new ExampleBean();
        
        public static ExampleBean createInstance(){
            return exampleBean;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    xml 定义Bean:

    <beans>
        
        <bean id="exampleBean" class="hom.wang.vo.ExampleBean" factory-method="createInstance"/>
    beans>
    
    • 1
    • 2
    • 3
    • 4

    ③ 实例工厂方法实例化

    与通过静态工厂方法进行实例化类似,实例工厂方法实例化就是bean-B通过 factory-bean 指定bean-A,再通过 factory-method 指定bean-A的静态工厂方法返回bean-B的实例

    Bean类:

    package hom.wang.vo;
    public class BeanA {
        
        private static BeanB beanB = new BeanB();
        
        public static BeanB createBeanBInstance(){
            return beanB;
        }
    }
    public class BeanB {
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    xml 定义Bean:

    <beans>
        
        <bean id="beanA" class="hom.wang.vo.beanA"/>
        
        
        <bean id="beanB"
        	factory-bean="beanA"
        	factory-method="createBeanBInstance"/>
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这种方法表明工厂bean本身可以通过依赖注入(DI)进行管理和配置。

  • 相关阅读:
    面试突击24:为什么wait和notify必须放在synchronized中?
    【数据结构】欧拉回路(优化最短路-图论)
    SVM学习笔记
    【Node.js】Node.js入门(七):Express接口覆盖、模板引擎、错误处理、调试
    Chapter1 Regression
    Springboot底层原理
    Linux下线程间通讯---读写锁和条件变量
    Cookie简介
    测试/开发程序员面试建议,把握机会轻松拿offer......
    GFS分布式文件系统及其部署
  • 原文地址:https://blog.csdn.net/qq_30769437/article/details/126744784