Spring配置文件配置bean

本文详细介绍了在Spring框架中创建Bean的各种方式,包括无参构造函数、有参构造函数、工厂实例方法及静态方法等,并展示了如何配置这些Bean及其属性注入。

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

直接看实例:

Users.java

package cn.iborder.entity;

import cn.iborder.logging.MyLog;

public class Users {
	private Integer id;
	private String username;
	private String password;
	private String name;
	
	public Users(){
		System.out.println(MyLog.showLog(this)+"无参构造函数,Users对象创建"+this);
	}
	
	public Users(Integer id,String username,String password,String name){
		System.out.println(MyLog.showLog(this)+"有参构造函数,Users对象创建"+this);
		this.id = id;
		this.username = username;
		this.password = password;
		this.name = name;
	}
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}
	
	public void setUsername(String username) {
		this.username = username;
	}
	
	public String getPassword() {
		return password;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	@Override
	public String toString() {
		return "Users [id=" + id + ", username=" + username + ", password=" + password + ", name=" + name + "]";
	}
	
	public void init() {
		System.out.println(MyLog.showLog(this)+"对象创建时调用"+this);
	}
	
	public void destory() {
		System.out.println(MyLog.showLog(this)+"对象销毁时调用"+this);
	}
	
}

BeanFactory.java

package cn.iborder.factory;

import cn.iborder.entity.Users;

public class BeanFactory {
	
	public Users getInstance() {
		return new Users(3, "baidu", "baidupass", "baiduname");
	}
	
	public static Users getStaticInstance() {
		return new Users(4, "sina", "sinapass", "sinaname");
	}

}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
	
	<!-- ##############对象创建############### -->
	
	<!-- bean节点
		声明对象交给Spring框架来创建
		id:			标识容器中的bean,id唯一。
		class:		bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求bean中必须有无参数的构造器	
		scope		指定该对象的作用域,参数如下:
						singleton			默认值,在应用启动时就已经创建了bean对象。表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例
						prototype		表示每次获得bean都会生成一个新的对象(多例模式),在调用bean对象时才会创建对象。
						request			表示在一次http请求内有效(只适用于web应用)
						session				表示在一个用户会话内有效(只适用于web应用)
		lazy-init	设置单例模式下bean对象在调用时才创建。默认值为default(false)
		init-method			在bean实例化后要调用的方法
		destroy-method	指定bean对象销毁时调用的方法
	-->
	
	<!-- ######调用无参构造函数创建bean对象###### -->
	<bean id="Users" class="cn.iborder.entity.Users" scope="singleton" lazy-init="default" init-method="init"  destroy-method="destory">
		<!-- property
			在bean对象创建时通过setter方法给属性(成员变量)注入值
			name	属性名
			value	属性值
			ref		引用其他bean对象
		 -->
		<property name="id" value="1"></property>
		<property name="username" value="baidu"></property>
		<property name="password" value="alipay"></property>
		<property name="name" value="sina"></property>
	</bean>
	
	<!-- ######调用有参构造函数创建bean对象###### -->
	<bean id="Users1" class="cn.iborder.entity.Users">
		<!-- constructor-arg节点
			通过有参构造函数给属性(成员变量)注入值
			通过构造函数注入属性值可以指定参数的位置和参数的类型,以区分重载的构造器
			value	给有参构造函数设置参数值
			index	指定参数的索引(位置)
			type	指定参数的类型
		 -->
		<constructor-arg value="2" index="0" type="java.lang.Integer"></constructor-arg>
		<constructor-arg value="sina" index="1"></constructor-arg>
		<constructor-arg value="taobao" index="2"></constructor-arg>
		<constructor-arg value="tmall" index="3"></constructor-arg>
	</bean>
	<!-- ######工厂类创建bean对象,实例方法###### -->
	<!-- 工厂类 -->
	<bean id="factory" class="cn.iborder.factory.BeanFactory"></bean>
	<bean id="Users2" factory-bean="factory" factory-method="getInstance"></bean>
	
	<!-- ######工厂类创建bean对象,静态方法###### -->
	<bean id="Users3" class="cn.iborder.factory.BeanFactory" factory-method="getStaticInstance"></bean>
	
</beans>

applicationContext.xml中给bean对象属性注入值(依赖注入)

1、通过构造函数注入

具体看上面applicationContext.xml配置文件

2、通过setter方法注入值

具体看上面applicationContext.xml配置文件

3、P名称空间注入值

示例

<bean id="Users" class="cn.iborder.entity.Users" p:id="1" p:username="baidu " p:password="10086" p:name="sina"></bean>
<bean id="UsersDao" class="cn.iborder.Dao.impl.UsersDao" ></bean>
<bean id="UsersService" class="cn.iborder.Service.impl.UsersService" p:usersDao-ref="UsersDao"></bean>
<bean id="LoginAction" class="cn.iborder.action.LoginAction" p:usersService-ref="UsersService" scope="prototype"></bean>

4、自动装配(不推荐使用)

5、注解

 

转载于:https://my.oschina.net/u/2321708/blog/817126

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值