03 Spring框架 bean的属性以及bean前处理和bean后处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了03 Spring框架 bean的属性以及bean前处理和bean后处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2206字,纯文字阅读大概需要4分钟。
内容图文
上一节我们给出了三个小demo,具体的流程是这样的:
1.首先在aplicationContext.xml中添加<bean >
。(还有两种工厂配置)
2.其次写一个自定义类,里面只包含一个系统输出的show()。
3.使用
ApplicationContext hw=new classpathXmlApplicationContext("applicationContext.xml");
实例化Spring容器。
4.最后用 HelloWorld hw=(HelloWorld)context.getBean(“c1”);获得对象,再使用对象hw调用show()方法测试对象是否创建: hw.show();
所以我们可以从上面的例子了解到,先写一个类,然后在applicationContext.xml中添加<bean >
实例,然后在TestHelloWorld中测试调用。
这个是ioc的最基本的一个流程。
接下来我们介绍bean的相关属性:
①bean在Spring中有两种基本类型(这两种比较常用,其他的我们不作介绍):singleton和prototype(单例和原型),Spring中默认使用单例,若请求为原型,那么Spring就会新建一个bean实例然后返回给程序。
单例和原型可以在bean中用scope属性设置 :
<bean scope="singleton/prototype">
单例和原型有哪些区别?
(一)他们都能够创建对象,但是单例创建的实例成功后能够重复的使用(即如果已经创建成功,当请求需要再次建立已经创建的实例的话,Spring就检查容器中是否存在这个实例,如果存在就使用已经创建的实例,如果没有就新创建一个实例),而原型,每当有请求需要建创建实例的时候都需要新建一个实例(无论容器中是否存在相同已创建的实例)。
(二)它们创建对象的时机不同,单例在默认在Spring主配置文件被加载的时候就会被创建,而原型则是需要使用的时候创建对象。
②指定对象的初始化方法(用来初始化对象),利用bean中的init-method指定
<bean id="" class="" init-method="">
③指定对象销毁方法(想要指定必须要满足实例组件为单例,并且调用 AbstractApplicationContext容器对象的ac.close触发)
<bean id="" class="" destroy-method="">
④延时创建实例,使用lazy-init=“true”设定默认为false,实例不是立即创建,而是用到时用getBean方法调用创建(控制单例的创建时机)
<bean id="" class="" lazy-init="true">
什么事bean前处理,什么又是bean后处理:
Spring提供了一个接口,我们可以定义一个类,实现这个接口,这个接口提供了两个方法:
- postProcessBeforeInitialization
- postProcessAfterInitialization
分别会在对象的创建之前和创建之后调用,
实现这个接口可以帮助我们在一些情况下,在一个对象创建的前后添加一些日志和预处理,或者关闭处理。
接下来我们就来看看这个接口怎么实现:
public class postProcessor implements BeanPostProcessor { @Override public Object postProcessAfterInitialization(Object bean, String service) throws BeansException { System.out.println("after"); return bean;//这里的返回必须为bean } @Override public Object postProcessBeforeInitialization(Object bean, String service) throws BeansException { System.out.println("before"); return bean;//这里的返回必须为bean } }
上面的这个类实现了BeanPostProcessor接口并提供了bean前方法和bean后方法,两个方法的参数都为我们想要生成的对象的引用。
想要使用这个方法,我们不仅需要定义这个类,还要在Spring主配置文件中注册一下:
< bean class ="beanBeforeAndAfter.postProcessor" />
这样在产生bean之间就会输出before和after。
上面就是这个实现类的具体使用方法(省略了具体的bean对象产生配置)。
版权声明:本文为博主原创文章,如需转载请表明出处。 https://blog.csdn.net/qq_39266910/article/details/77745245
原文:https://www.cnblogs.com/chengshun/p/9776124.html
内容总结
以上是互联网集市为您收集整理的03 Spring框架 bean的属性以及bean前处理和bean后处理全部内容,希望文章能够帮你解决03 Spring框架 bean的属性以及bean前处理和bean后处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。