• Spring-IOC配置-bean


    目录

    bean的基本配置

    实例演示:

    bean属性scope

    实例演示:

    bean的生命周期控制

    实例演示:

    静态工厂与实例工厂创建bean

    实例演示:


    • bean的基本配置

    • bean
    • 类型:标签
    • 归属:beans标签
    • 作用:定义spring中的资源
    • 受此标签定义的资源将受到spring控制
    • 格式:
    •    
    • 基本属性:
    • id:bean的名称,通过id值获取bean
    • class:bean的类型
    • name:bean的名称,可以通过name值获取bean,用于多人配合时给bean起别名
    • 实例演示:

    • bean属性scope

    • 类型:属性
    • 归属:bean标签
    • 作用:定义bean的作用范围
    • 格式:
    • 取值:
    • singleton:(默认)
    • 设定创建出的对象保存在spring容器中,是一个单例的对象
    • prototype:
    • 设定创建出的对象保存在spring容器中,是一个非单例的对象
    • request、session、application、websocket:
    • 设定创建出的对象放置在web容器对应的位置
    • 实例演示:

    • 使用singleton时,只创建一次对象
    • 是在加载容器时创建
    • 使用prototype时,在获取对象时创建对象,获取一次创建一次
    • bean的生命周期控制

    • 名称:init-method,destroy-method
    • 类型:属性
    • 归属:bean标签
    • 作用:定义bean对象在初始化或销毁时完成的工作
    • 格式
    • 取值:bean对应的类中对应的具体方法名
    • 实例演示:

    • singleton:(默认)版
    • prototype:版
    • 为啥destroy没有出现
    • destroy操作其实是运行了的
    • 但是程序结束时,虚拟机已经退了,还没来得及释放资源就已经结束了
    • 所以看不到
    • 通过在虚拟机结束前,强制把容器关了就能看到了(记得把ApplicationContext改为ClassPathXmlApplicationContext)
    • 使用prototype;destroy没有出现
    • 因为当spring配置的是非单例对象时,它不归spring容器进行管理,没放在容器中
    • spring只是帮它new了一下
    • 所以关容器和它没有关系
    • 使用singleton:(默认),destroy出现
    • 静态工厂与实例工厂创建bean

    • 静态工厂版:
    • 名称:factory-bean
    • 类型:属性
    • 归属:bean标签
    • 作用:定义bean对象创建方式
    • 使用静态工厂的形式创建bean,兼容早期遗留系统的升级工作
    • 格式
    • 取值:工厂bean中用于获取对象的静态方法名
    • 注意事项
    • class属性必须配置成静态工厂的类名
    • 实例工厂版:
    • 名称:factory-bean,factory-method
    • 类型:属性
    • 归属:bean标签
    • 作用:定义bean对象创建方式
    • 使用实例工厂的形式创建bean,兼容早期遗留系统的升级工作
    • 格式
    • 取值:工厂bean中用于获取对象的实例方法名
    • 注意事项
    • 使用实例工厂创建bean首先需要将实例工厂配置bean,交由spring进行管理
    • factory-bean是实例工厂的beanId
    • 实例演示:

    • 静态工厂版:
    • 构造工厂类
    • 配置好配置文件
    • 测试成功
    • 实例工厂版:
    • 构造工厂类
    • 配置好配置文件
    • 测试发现之前的静态也一同执行了(因为加载配置文件把之前的也加载了)
    • 注释掉之前静态的配置再测试测试成功
  • 相关阅读:
    如何应对GNSS/GPS欺骗?GPS/GNSS防欺骗测试
    经验风险最小化与极大似然估计概念
    Python Argparse 库讲解特别好的
    cesiumlab中shp转3dtiles白模效果一
    【牛客 - 剑指offer】JZ31 栈的压入、弹出序列 两种方案 Java实现
    【C++模块实现】| 【04】配置模块
    golang http客户端常用API:GET POST HEAD及自定义http客户端代码示例
    DevOps管理软件生命周期
    【OpenCV 例程 300篇】245. 特征检测之 BRISK 算子
    【shiro-安全框架】入门基础学习
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/126533543