Spring学习(二)
第二章 Spring的构造函数注入、Singleton(单例模式)、自动装配和生命周期
一、构造函数注入
以user类为例,对于id,name,password属性,可以在配置文件中进行以下几种构造函数注入的方法:
<constructor-arg index="0" value=" "/>
<constructor-arg index="1" value=" "/>
<constructor-arg index="2" value=" "/>
<constructor-arg type="int" value=" "/>
<constructor-arg type="java.lang.String" value=" "/>
<constructor-arg type="java.lang.String" value=" "/>
<constructor-arg name="id" value=" "/>
<constructor-arg name="name" value=" "/>
<constructor-arg name="password" value=" "/>
二、Singleton(单例模式)
当一个bean的作用域为Singleton,那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。Singleton是单例类型,就是在创建起容器时就同时自动创建了一个bean的对象,不管你是否使用,他都存在了,每次获取到的对象都是同一个对象。注意,Singleton作用域是Spring中的缺省作用域。要在XML中将bean定义成singleton,可以这样配置:
<bean id="ServiceImpl" class="cn.csdn.service.ServiceImpl" scope="singleton">
三、自动装配
自动装配是使用spring满足bean依赖的一种方法,Spring会在应用上下文中为某个bean寻找其依赖的bean。
default-autowire=" "
- byName (按名称自动装配)
由于在手动配置xml过程中,常常发生字母缺漏和大小写等错误,而无法对其进行检查,使得开发效率降低。
采用自动装配将避免这些错误,并且使配置简单化。
- byType(按类型自动装配)
首先需要保证:同一类型的对象,在spring容器中唯一。如果不唯一,会报不唯一的异常。
四、生命周期
default-init-method="defaultInit" default-destroy-method="defaultDestroy
init-method="start" destroy-method="stop"
public class LifeCycle implements InitializingBean, DisposableBean {
public void start() {
System.out.println("LifeCycle start");
}
public void stop() {
System.out.println("LifeCycle stop");
}
public void defaultInit() {
System.out.println("defaultInit");
}
public void defaultDestroy() {
System.out.println("defaultDestroy");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet");
}
@Override
public void destroy() throws Exception {
System.out.println("destroy");
}
}
总结
以上就是今天要讲的内容。