Spring入门IOC(二)

    上文我们说的就是SpringIOC的思想,此文,我们写几个实例,具体介绍IOC容器的使用。

    首先,Spring是一个很轻量级的框架,我们只需要下载几个jar包,将其导入项目之中即可,这一步无需多言。

    Spring配置文件是IOC容器的核心,他将需要管理的对象都放置于此,利用Java反射的机制获取对象的实例,以及管理对象的依赖关系。

    好的,再我们来介绍Spring中的Bean,所谓的Bean其实和Java规范中的JavaBean很像:有着无参数的构造方法;对封装的对象有相应的getter以及setter。在Spring配置文件中配置Bean的方式也很简单,测试项目先写了两个Bean,大致方式就是,给Bean配一个类的全类名,如下:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="userDao2" class="lfq.ima.UserDao2">
	</bean>
	<bean id="userDao" class="lfq.ima.UserDao" scope="singleton">
		<property name="userDao2" ref="userDao2"></property>
	</bean>
	
</beans>

    Bean的命名方式有两种,id和name都可以给Bean命名,两者的区别在于:id必须唯一,且不能有特殊字符;而name可以不唯一,且可以有特殊字符,在没有id时,可以做id使用。

* 整合 struts1 的时候:
<bean name=”/loginAction” >    

    另外的,Bean有五个作用域:singleton(默认):单例,即Spring中的每一个Bean只获取一个对象实例、prototype(原型):每当一个Bean被调用一次,都会有一个新的对象实例产生;后三种是要在web环境下才有效:request:在每一次Http请求中,Bean都会被新建一次,一个请求共享一个实例、session:再一次会话中,Bean会被共享,且只有一个、globalSession:不做了解。

    在这里,稍作提一下ApplicationContext和BeanFactory的区别,两者很像,都是Spring的核心,都可以构造Bean和管理Bean,且ApplicationContext是BeanFactory的继承,ApplicationContext不仅有着BeanFactory的所有功能,还提供着额外功能:一、在ApplicationContext刚实例化时便会加载所有的单例Bean;二、能够访问文件的URL;三、可同时加载多个配置文件,等等。

    问题就又出现了,在加载ApplicationContext初期会加载所有的单例Bean,如何阻止这种行为呢?在scope="singleton"时,默认的lazy-init属性便是false,我们可以手动地将它设置为true,这样,他就会在第一次被调用时,才会实例化,也可以在beans里面对所有的bean进行该设置。

    在bean中可以书写方法,将方法名加入到init-method属性或者destroy-method属性中,即可以分别在bean初始化时或者bean销毁时调用。针对单例的bean来说,Spring容器会在bean销毁或者构建时调用两种方法,但是对于多例的情况来说,Spring容器只会在bean加载时调用init-method,并不会跟踪到destroy-method,可以理解为Spring仅仅只完成了该bean的装配,然后让其交由客户端代码处理。

    综上,Spring可以知道singleton的bean全部的生命周期,何时创建,何时销毁,都能了然,然而对于prototype类型的bean的生命周期,Spring无法全局把控,只当将其实例化后就交由客户端。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值