JSON

Spring学习(3)

字号+ 作者:H5之家 来源:H5之家 2017-01-10 11:00 我要评论( )

上一节中,我们深入了解了Spring中bean之间是如何进行关联的以及简单了解控制反转和依赖注入。这一节中,我们主要来说说bean。一、从applicationContext应用上下

上一节中,我们深入了解了Spring中bean之间是如何进行关联的以及简单了解控制反转和依赖注入。这一节中,我们主要来说说bean。

一、从applicationContext应用上下文和bean工厂中获得bean有什么区别?

bean的作用域(4种)

singleton:在每个Spring IOC容器中一个bean定义对应一个对象实例。(只要容器存在,那么就只有一个bean。比如说
Student st1 =(Student) ac.getBean(“student”);
Student st2 =(Student) ac.getBean(“student”);
这样创建出的只是一个Student对象。)

prototype:一个bean定义对应多个 (每获得一个bean就是一个全新的bean。比如说
Student st1 =(Student) ac.getBean(“student”);
Student st2 =(Student) ac.getBean(“student”);
这样创建出的却是两个不同的Student对象。))

request:在一次http请求中,一个bean定义对应一个实例;即每次http请求将会有各自的bean实例,他们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。(一次请求有效)

global Session:在一个全局http Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web 的Spring applicationContext情形下有效。(只要Spring容器不关闭,那么他就一直有效)

创建bean的方式

利用ApplicationContext创建

当bean的scope是 singleton时,程序一旦执行

ApplicationContext ac= new ClassPathXmlApplicationContext("applicationContext.xml");

时,程序会自动加载Spring容器,并且将里面的bean实例化。 但是,当我们设置scope是prototype的时候,他依然是延时加载的。

利用bean工厂来创建
程序一旦执行

BeanFactory factory = new XmlBeanFactory( new ClassPathResource("applicationContext.xml"));

时,程序只是对该容器进行实例化,并不会马上实例化容器中的bean,当我们使用getbean方法去得到某个bean时,才会实时创建出该对象。

从上面的描述中我们可以清楚地知道,利用ApplicationContext的方式(scope=”singleton”)获得bean可以增加程序的运行速度,因为他可以预先加载所有单例模式的bean,确保应用不需要等待他们被创建。利用bean工厂可以节省内存。
但是我们通常还是用ApplicationContext的方式来获得bean。

二、bean的生命周期

实例化
当程序加载.xml文件的时候就开始实例化。把我们的bean(单态的)实例化到内存中(使用无参的构造函数来实例化)。

设置属性
调用set方法设置属性

如果实现了BeanNameAware接口并且实现了setBeanName()方法

public void SetName(Stirng arg0){}

该方法可以用arg0表示正在被实例化的bean的id(返回的值取决于你在配置文件中的id设置的是什么。)

如果实现了BeanFactoryAware接口并且调用了setBeanFactory()方法

public void setBeanFactory(BeanFactory arg0) throws BeanException{}

该方法可以用arg0传递所使用的beanFactory对象

如果实现了ApplicationContextAware接口并且调用了setApplicationContext()方法

public void setApplicationContext(ApplicationContext arg0) throws BeansException{}

那么可以通过arg0传递获取ApplicationContext的方式。(获取方式有三种,这里不细说,立一个flag)

列表内容

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 在application/json,application/javascript等Response下进行XSS

    在application/json,application/javascript等Response下进行XSS

    2016-12-30 18:01

  • 逐项学习 :微软Azure大数据服务

    逐项学习 :微软Azure大数据服务

    2016-12-16 14:00

  • 深度学习框架Caffe解析:从代码层面定制新功能

    深度学习框架Caffe解析:从代码层面定制新功能

    2016-12-15 17:02

  • Jackson学习4之使用Streaming API创建以及读取JSON

    Jackson学习4之使用Streaming API创建以及读取JSON

    2016-12-06 17:00

网友点评