spring学习篇之配置文件(1)

1.bean标签的配置

1.1 scope范围配置

scope:指对象的作用范围,取值如下:
bean的取值范围
示例如下:

<bean id="唯一标识id" class="类的全限定名" scope=""></bean>

1.2 bean的创建时间

scope="singleton"时,加载配置文件时,bean对象就创建了
scope="prototype"时,在调用getbean()方法时才会创建对应的bean对象,并且会创建多个。
在singerton这里插入图片描述
在prototype这里插入图片描述

1.3 bean的生命周期配置

1.init_method:指定类中的初始化方法名称
2.destroy_method:指定类中的销毁方法名称
使用方法如下:

<bean id="唯一标识id" class="类的全限定名" scope="" init_method="" destroy_method=""></bean>

1.4 bean的实例化三种方式

1.无参构造方法实例化

<bean id="UserDao" class="类的全限定名"></bean>

2.工厂静态方法实例化
首先先写一个工厂类返回对象

public class FactoryTest1{
public static Object getUserDao(){
return new UserDaoimpl();
}
}
<bean id="UserDao" class="com.test.FactoryTest" factory_method="getUserDao"></bean>

3.工厂实例方法实例化
首先写一个工厂类返回对象(返回对象的方法不是静态的)

public class FactoryTest2{
public Object getUserDao(){
return new UserDaoimpl();
}
}
<bean id="factory" class="com.test.FactoryTest2"></bean>
<bean id="UserDao" factory_bean="factory" factory_method="getUserDao" >

注意:实例化工厂方法需要现有一个工厂类的实例。

2 bean的依赖注入

2.1 bean的依赖注入分析

依赖注入分析
在这里插入图片描述

依赖注入是spring框架IOC的一个具体实现
在编写程序时,使用控制反转,将对象的创建交给了spring容器,但是代码中不可能出现没有依赖的情况,依赖不会消失,只会减少,业务层还是会调用持久层的方法。
那这种业务层和持久层之间的依赖关系,在使用spring之后,就交给spring来维护了,简单来说就是,不用我们自己去获取,而是等待框架将持久层对象传到业务层。

2.2 bean对象的依赖注入的方式

1.构造方法

public class UserServiceImpl implements UserService{
	private UserDao userdao;
	//有参构造方法
	private UserServiceImpl(UserDao userdao){
		this.userdao=userdao;
	}
	//无参构造方法
	private UserServiceImpl(){}
	public void save(){
		userdao.save;
	}
}
<bean id="UserService" class="com.test.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>

2.set方法

public class UserServiceImpl implements UserService{
	private UserDao userdao;
	public void setUserDao (UserDao userdao){
		this.userdao=userdao;
	}
	public void save(){
	userdao.save;
	}
}

然后再配置文件中配置

<bean id="UserService" class="com.test.UserServiceImpl">
<property name="userDao"/>(--set方法后面的名字,大写要变成小写的--) ref="userDao(注入bean的唯一id)
</bean>

set方法注入还有一个p命名空间注入。

2.3 bean依赖注入的数据类型

上面的操作,都是注入对象的引用,除了对象的引用,普通数据类型和集合等都可以在容器中注入。
普通数据类型的注入:

public class UserDaoImpl implements UserDao{
	private String username;
	private int age;
	public void setUsername (String name){
		this.username=name;
	}
	public void setage (int age){
		this.age=age;
	}
	public void save(){
	userdao.save();
	}
}
<bean id="UserDao" class="com.test.UserDaoImpl">
<property name="username" value="zhangsan"/>
<property name="age" value="18"/>
</bean>

集合的注入:

public class UserDaoImpl implements UserDao{
	private map<String,Integer>
	public void setMap(Map<String,Integer> map){
		this.map=map;
	}
	public void save(){
	userdao.save();
	}
}
<bean id="UserDao" class="com.test.UserDaoImpl">
<property name="map">
<map>
<entry key="zhangsan" value="18"> </entry>
</map>
</property>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值