一、定义bean的属性以及作用域
1、定义bean的属性表:
属性 | 描述 |
---|---|
class | 这个属性是强制性的,并且指定用来创建bean的bean类 |
name | 这个属性指定唯一的bean标识符。在基于xml的配置元数据中,你可以使用id或者name来指定bean的标识符 |
scope | 这个属性指定由特定的bean定义创建的对象的作用域 |
constructor-arg | 它是用来注入依赖关系的 |
autowiring mode | 它是用来注入依赖关系的 |
properties | 它是用来注入依赖关系的 |
2、作用域的类型
作用域 | 描述 |
---|---|
singleton | 该作用域将bean的定义限制在每一个Spring IOC容器中的一个单一实例(默认) |
prototype | 该作用域将单一bean的定义限制在任意数量的对象实例 |
二、 生命周期的概述
当一个bean被实例化时,它可能需要执行一些初始化使它转换成可用状态,同样,当bean不再需要,并且从容器中移除时,可能需要做一些清除工作,这样状态转换的过程就是bean的生命周期。
生命周期体现的两种方式分别为:代码实现和配置文件实现(由于配置文件实现方式更加灵活,所以我们更多采用配置文件)。
1、继承
补充说明:
定义一个bean时,如果用abstract="true"属性的话,则表明该bean自身不能实例化,仅仅只是作为一个纯粹的模板bean定义来使用的,充当子定义的父定义来使用。
生命周期代码说明:
1、在src下面创建一个包并定义一个类,在里面写两个方法分别是:初始化和销毁方法。
package com.zhiyuan.life;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Life {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//定义一个初始化方法,在生命周期开始之前运行
public void init(){
Zhangsan zs = new Zhangsan();
zs.setAge("13岁");
System.out.println(zs.getAge());
}
//定义一个销毁方法,在生命周期结束之后运行
public void destroy(){
System.out.println("我现在要销毁你啦啦");
}
}
2、在.xml文件总配置bean。
<!-- 这里面init-method和destroy-method里面的值必须跟java里面设置的方法名相同 -->
<bean id="a" class="com.zhiyuan.life.Life" init-method="init" destroy-method="destroy">
</bean>
<!--class="包名.类名" id是设置bean中的标识符-->
<bean id="b" class="com.zhiyuan.life.Zhangsan">
<property name="age" value="99岁"></property>
</bean>
3、再建立一个测试类。
package com.zhiyuan.life;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
//创建一个容器
AbstractApplicationContext ac = new ClassPathXmlApplicationContext("September.xml");
Zhangsan li = (Zhangsan)ac.getBean("b");
System.out.println(li.getAge());//获取在bean中设置的值
ac.registerShutdownHook();//销毁程序
}
}