Spring—— 定义bean的属性以及作用域(Bean的生命周期和继承)

本文深入探讨了Spring框架中Bean的定义与生命周期管理,详细解释了如何通过配置文件定义Bean的属性,如class、name、scope等,以及如何通过init-method和destroy-method配置初始化和销毁方法,确保Bean在不同阶段的正确状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定义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();//销毁程序
	}
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值