Spring5学习——第二天 IOC容器XML文件下的配置

工厂bean
①什么是工厂bean
普通bean就是在bean标签内class内声明是哪个类,创建的就是哪一个类的对象
工厂bean就是创建的对象所在的类和bean标签内class内声明的类不一致
②如何创建一个工厂bean
在这里插入图片描述
工厂bean的类需要实现FactoryBean接口,并重写getObject方法,这个方法返回值就是工厂bean代工生成的bean对象,这里用到了泛型.
在这里插入图片描述
而在xml文件中这个工厂bean的bean标签声明和普通bean一样,没有区别
在这里插入图片描述
但是注意在调用时,getBean()方法中第二个参数是代工生成出来的对象所在类的Class类型对象实例
bean的作用域
在这里插入图片描述
bean的作用域主要与bean标签中的scope属性相关,如果scope中的值为singleton,说明这个bean对象是单例的,意思是在程序执行的时候,加载xml文件信息的同时会创建当前bean的单例对象,后面所有对该bean的getBean()方法,返回的都是这个单例bean对象
在这里插入图片描述
如果scope中值为prototype时,说明这个bean的对象是多例的,在程序执行时,加载当前xml文件信息时并不会创建对应的bean对象,而是每一次调用当前bean的getBean()方法时创建一个当前bean对象并返回。每一个getBean()得到的当前bean对象都是新的
而scope属性的默认值是singleton,即单例的
Bean的生命周期
①通过构造器创建bean实例(无参构造)
②为bean的属性设置值和对其他bean的引用(调用set方法)
③把bean实例传递给bean后置处理器的postProcessBeforeInitialization方法(执行初始化方法之前都会执行这个方法)
在这里插入图片描述
在这里插入图片描述
初始化方法在xml文件中的配置和其他bean标签配置一样,配置完成之后,当前xml文件中的所有bean实例被创建时,都会调用后置处理器中的方法
④调用bean的初始化方法(需要进行配置初始化的方法)
在这里插入图片描述
方法名不重要,重要的是在xml文件中为这个bean配置属性init-method中指明初始化执行这个方法
在这里插入图片描述

⑤把bean实例传递给bean后置处理器的postProcessAfterInitialization方法(执行初始化方法之后都会执行这个方法)
⑥可以获取到bean实例对象
⑦当容器关闭时,调用bean的销毁方法(需要配置bean销毁的方法)
在这里插入图片描述
同初始化方法一样,方法名不重要,重要的是在xml文件中的配置destroy-method属性指明bean实例销毁时要执行的方法
在这里插入图片描述
在这里插入图片描述
销毁实例调用的是加载xml文件的ClassPathXmlApplicationContext实例对象的close()方法,而ApplicationContext实例中没有这个方法,需要强转
在这里插入图片描述
xml配置的自动装配
自动装配有两种方式,byName 和 byType
在这里插入图片描述
这种方式就是byName,设置myLib的autowire属性为byName,会找到MyLib中的属性名,然后和当前xml文件中所有bean标签中的id值进行比对,如果一致,则将id值与属性名一致的bean实例对象注入给myLib的属性
在这里插入图片描述
这种方式就是byType自动装配,设置myLib中的autowire属性值为byType后,会找到MyLib中的属性的类型与当前xml文件中的所有bean标签的class进行比对,如果一致,则将生成一个class属性值与MyLib属性类型一致的bean实例对象进行注入
不过值得注意的是,class与要自动装配的类的属性类型一致的bean,不能设置多个,不然自动装配无法识别要装配哪一个bean对象
自动如果没有找到可以注入的属性值,就会跳过当前属性赋值下一个属性
简而言之,byName识别其他bean标签中的id属性值,byType识别其他标签中的class属性值
加载外部属性文件进行属性注入
在xml文件中配置 Context名称空间
在这里插入图片描述
在src下配置属性文件
在这里插入图片描述
在xml文件中引入外部属性文件
在这里插入图片描述
从外部属性文件中读取属性值进行属性注入
在这里插入图片描述
${}内的值为你要从属性文件中读取的属性值的属性名,这里只是懒得改名字使得两个名字一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值