Spring学习-3-Bean配置

本文介绍Spring框架中的Bean配置方法,包括Bean的基本概念、属性定义、作用域及生命周期,并详细阐述了基于XML的装配方式,如构造注入和设值注入。

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

Bean配置

如果把Spring看做一个大型工厂,则Spring容器中的Bean就是该工厂的产品。
要想使用这个工厂生产和管理Bean,就需要在配置文件中告诉它需要哪些Bean,以及需要使用何种方式将这些Bean装配到一起

Bean的本质就是Java中的类,而Spring中的Bean其实就是对实体类的引用,来生产Java类对象,从而实现生产和管理Bean 
Bean的配置方式是通过XML文件来注册并管理Bean之间的依赖关系

Bean属性

id Bean的唯一标识,Spring容器对Bean的配置,管理都通过该属性
name Spring容器同样可以通过该属性对容器中的bean进行配置,管理,name属性可以为bean指定多个名称,每个名称之间使用逗号或者分号隔开
class  该属性指定Bean实现的具体类,它必须是一个全称
scope bean实例的作用域

 Bean作用域

 singleton是Spring容器默认的作用域,当Bean的作用域为singleton时,Spring容器就只会存在一个共享的Bean实例
,无论多少Bean引用它,始终指定同一个对象
prototype 每次通过Spring容器获取的prototype定义的bean时,容器都将创建一个新的Bean实例.

Bean生命周期

 

 Bean装配方式

Bean的装配可以理解为依赖关系注入,Bean的装配方式即Bean依赖注入的方式。Spring容器支持多种形式的Bean的装配方式,如基于XML的装配、基于注解(Annotation)的装配和自动装配(其中最常用的是基于注解的装配)

基于xml的配置:
setter注入 条件:Bean类必须有一个无参构造方法 Bean类必须为属性提供setter方法
在配置文件中,使用<property>元素来为每个属性注入值
 
构造函数注入 条件:Bean类必须提供有参构造方法
配置文件中,使用<constructor-arg>元素来为参数注入值

自动装配:
所谓自动装配,就是将一个Bean自动的注入到到其他Bean的Property中。
Spring的<bean>元素中包含一个autowire属性,我们可以通过设置autowire的属性值来自动装配Bean,autowire属性有5个值

构造注入:

public class User {
	private String username;
	private Integer password;
	private List<String> list;
	/**
	 * 1.使用构造注入 
	 * 1.1提供带所有参数的有参构造方法。
	 */
	public User(String username, Integer password, List<String> list) {
		super();
		this.username = username;
		this.password = password;
		this.list = list;
	}
	/**
	 * 2.使用设值注入 
	 * 2.1提供默认空参构造方法 ;
	 * 2.2为所有属性提供setter方法。
	 */
	public User() {
		super();
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public void setPassword(Integer password) {
		this.password = password;
	}
	public void setList(List<String> list) {
		this.list = list;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password +
				", list=" + list + "]";
	}
}
	<!--1.使用构造注入方式装配User实例 -->
	<bean id="user1" class="com.itheima.assemble.User">
		<constructor-arg index="0" value="tom" />
		<constructor-arg index="1" value="123456" />
		<constructor-arg index="2">
			<list>
				<value>"constructorvalue1"</value>
				<value>"constructorvalue2"</value>
			</list>
		</constructor-arg>
	</bean>
	<!--2.使用设值注入方式装配User实例 -->
	<bean id="user2" class="com.itheima.assemble.User">
		<property name="username" value="张三"></property>
		<property name="password" value="654321"></property>
		<!-- 注入list集合 -->
		<property name="list">
			<list>
				<value>"setlistvalue1"</value>
				<value>"setlistvalue2"</value>
			</list>
		</property>
	</bean>

自动装配: 

  <!-- 使用bean元素的autowire属性完成自动装配 -->
	<bean id="userDao" 
		class="com.itheima.annotation.UserDaoImpl" />
	<bean id="userService" 
	  class="com.itheima.annotation.UserServiceImpl" autowire="byName" />
	<bean id="userController" 
	  class="com.itheima.annotation.UserController" autowire="byName"/>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值