当前位置: 首页 > news >正文

SpringIoC容器对bean的管理

一、基础知识:

SpringIOC容器对bean的管理

一.spring对于bean的创建

        1.通过调用构造方法创建bean对象(默认)

        2.通过指定的工厂的工厂方法创建bean对象

        3.通过指定的静态工厂的工厂方法创建bean对象

二.spring对bean的作用域的管理

        含义:spring对bean的实例化的数量

        类型:

                1.单例:默认值,在整个spring容器中,只有一个bean实例

                2.多例:每次获取bean的时候,都创建一个新的bean实例

        web环境下

                3.请求:每次http请求时,创建一个新的bean实例

                4.会话:每次http会话时,创建一个新的bean实例

        语法:

                <bean scope="属性值"></bean>标签的scope属性

三.spring对bean的生命周期的管理

        实例化:创建对象,new

        属性赋值:DI

        初始化:实例化后,立刻要执行的操作

                1.init-method通过属性

                2.InitializingBean通过接口

        操作使用:使用javabean对象

        销毁:对象被回收

                1.destroy-method通过属性

                2.InitializingBean通过接口

二、spring对于bean的创建

1.通过调用构造方法创建bean对象(默认)

1.创建student实体类

public class Student {public Student(){System.out.println("===>执行student的无参构造方法~~~");}
}

2.编写spring配置文件

<!--=========================bean的创建方式1=============================-->
<bean class="com.ape.pojo.Student" id="student"></bean>

3.编写测试类

public class Test01
{public static void main( String[] args ) {ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Student student= (Student) applicationContext.getBean("student");System.out.println(student);}
}

2.通过指定的工厂的工厂方法创建bean对象

1.创建工厂及工厂方法

public class StudentFactory {public Student createStudent() {System.out.println("student的工厂类创建方法");return new Student();}
}

2.编写spring配置文件

<!--=========================bean的创建方式2=============================-->
<bean class="com.ape.pojo.Student" id="student" factory-bean="studentFactory" factory-method="createStudent"></bean>
<bean class="com.ape.factory.StudentFactory" id="studentFactory"></bean>

3.进行测试

        测试类与类型1一致

3.通过指定的静态工厂的工厂方法创建bean对象

1.创建静态工厂

public class StaticStudentFactory {public static Student createStudent() {System.out.println("静态工厂创建对象");return new Student();}
}

2.编写spring配置文件

<!--===========================bean的创建方式3==============================-->
<bean class="com.ape.factory.StaticStudentFactory" id="student" factory-method="createStudent"></bean>

3.进行测试

        测试类与类型1一致

三、spring对bean的作用域的管理

1.单例:默认值,在整个spring容器中,只有一个bean实例

2.多例:每次获取bean的时候,都创建一个新的bean实例

<!-- singleton -单例作用域-->

<!-- prototype -多例作用域-->

1.创建实体类

public class Teacher {
}

2.编写spring配置文件

<!--==========================bean的作用域==============================-->
<bean class="com.ape.pojo.Teacher" id="teacher" scope="singleton"></bean>

3.进行测试

public class Test01
{public static void main( String[] args ) {ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Teacher teacher1= (Teacher) applicationContext.getBean("teacher");Teacher teacher2= (Teacher) applicationContext.getBean("teacher");System.out.println(teacher1 == teacher2);}
}

当使用单例作用域时(scope="singleton"):

即两个teacher为同一实例

当使用多例作用域时(scope="prototype"):

即两个teacher是不同的实例

四、spring对bean的生命周期的管理

生命周期顺序:

        实例化

        属性赋值

        初始化

        操作使用

        销毁

1.创建实体类

public class Car implements InitializingBean, DisposableBean {private String cname;private int cprice;//执行销毁public void dodestory(){System.out.println("生命周期===》销毁(属性)");}public void destroy() throws Exception {System.out.println("生命周期===》销毁(接口)");}//执行初始化public void doinit(){System.out.println("生命周期===》初始化(属性)");}public void afterPropertiesSet() throws Exception {System.out.println("生命周期===》初始化(接口)");}public Car(){System.out.println("生命周期===》实例化");}public Car(String cname, int cprice) {this.cname = cname;this.cprice = cprice;}public String getCname() {return cname;}public void setCname(String cname) {System.out.println("生命周期===》DI");this.cname = cname;}public int getCprice() {return cprice;}public void setCprice(int cprice) {this.cprice = cprice;}@Overridepublic String toString() {return "Car{" +"cname='" + cname + '\'' +", cprice=" + cprice +'}';}
}

2.编写spring配置文件

<!--============================bean的生命周期==============================-->
<!--展示生命周期,必须是单例bean-->
<bean class="com.ape.pojo.Car" id="car" init-method="doinit" destroy-method="dodestory"><property name="cname" value="布加迪威龙"></property><property name="cprice" value="33"></property>
</bean>

3.进行测试

public class Test01
{public static void main( String[] args ) {ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Car car= (Car) applicationContext.getBean("car");System.out.println(car);//关闭spring容器applicationContext.close();}
}

http://www.dtcms.com/a/415121.html

相关文章:

  • 无广告阅读新体验:Reader与cpolar的远程访问方案
  • 集团网站建设行业现状电商网站开发 文献综述
  • 南昌做兼职的网站设计wordpress建站 客户端
  • ManualResetEventSlim:C# 线程同步工具
  • 手机网站制作织梦网站模板网站这么建设
  • 第2章 进程与线程
  • 网站编辑外包汕头 网站建设
  • 做企业网站支付功能网站建设主持词
  • 怎么把自己做的网站登录到网上html编辑器手机版
  • 南昌公司做网站需要多少钱wordpress页面定制
  • 作者须知 — Transactions Journals
  • 强化学习(3)策略梯度
  • langchain的核心组件
  • 算法基础篇(6)差分
  • Umbra(陰影):DDS底層協議漏洞遠程惡意組件注入Botnets
  • 【自然语言处理与大模型】LlamaIndex快速入门②
  • 附近广告公司地址快速优化seo
  • 文心大模型4.5:百度推出的新一代原生多模态基础大模型
  • 厦门网站推广费用广西网站建设银行
  • 今日面试之项目拷打:锁与事务的深度解析
  • 基于IMX6ULL 芯片 UART1
  • Coze源码分析-资源库-删除数据库-后端源码-基础设施/数据存储层
  • 多后端服务器架构解析
  • 四种常用SVC(service)及其与Ingress协作方式
  • C#多线程全家桶:从Thread到async/await
  • 网站备案 论坛甘肃微信网站建设
  • 数模之路获奖总结——数据分析交流(R语言)
  • 网站 后台 数据 下载网站优化软件推荐
  • Java数据结构第二十七期:布隆过滤器,用 “模糊” 换高效的查重黑科技
  • 怎么做质量高的网站如何实现网站建设服务