xml配置spring IOC的细节和bean标签的一些属性

上一篇文章中,简单实现和介绍了ssh开发环境的搭建和spring IOC(控制反转)的xml方式配置实现,这里要根据bean标签的一些属性来写一下spring IOC的一些细节


applicationContext.xml文件中配置:



	
	
	
		
	


我们看到spring ioc主要作用是:自动创建对象实例初始化属性,而且还可以组织装配对象。下面bean标签中的属性可以让装配、注入、加载的功能更强大。



1.自动装配  autowire

不同于上面在配置文件中,为action装配service,为service装配dao。这里可以自动进行装配。最常用的有两种方式:

(1)byName

  顾名思义,这里是找和名字一样的对象类进行自动装配。这里以service中的dao变量为例(这里详见上一篇博客文章http://blog.csdn.net/zlj1217/article/details/59015498)。

要根据在service中定义变量的名字在配置文件中找到id值相同的bean标签进行实例化。  这里就不用在service的bean标签之下配置property标签,因为service需要的是为名字为dao的变量初始化对象,会自动找在配置文件中 id为dao的配置生成类对象。




	
	
	autowire="byName">
	


(2)byType

根据相同类型自动装配,这里的type 是在service中找到与定义dao一样,类型是UserDAO的类。这里UserDAOFileImpl和UserDAOMySqlImpl 是实现了UserDAO接口,所以也是相同类。这里的名字和dao不相同也是可以的




	
	
	autowire="byType">
	

但是这样当有两个同样Type的配置时,会产生冲突。所以一般是使用ByName方式进行自动装配。


(3)可以在beans标签中设置default-autowise 为byName的方式


2.注入方式:

有两种注入属性的方式

(1)setter方式注入 对应着配置文件中  对应设置 property  标签(这里是手动装配)

  setter方式注入:例如注入service中的dao。就要在实现UserService接口的类中定义dao 生成其setter

  其中设置byName自动装配 只适合setter这种方式注入


(2)构造方法注入  对应设置 construction-arg标签

  构造方法注入:这时不需要setter和getter  ,而是生成参数是dao的 构造函数

  在配置文件applicationContext.xml中配置这个构造方法注入  标签为constrauctor-arg  属性为 name 和 ref


示例:构造器注入

package net.xinqushi.service.impl;

import net.xinqushi.dao.UserDAO;
import net.xinqushi.model.User;
import net.xinqushi.service.UserService;

public class UserServiceImpl implements UserService {

	private UserDAO dao;//在spring的配置中初始化dao层的实现
	
	//通过setter方式注入dao
//	public UserDAO getDao() {
//		return dao;
//	}
//	public void setDao(UserDAO dao) {
//		this.dao = dao;
//	}
	
	//通过构造器方式注入dao
	public UserServiceImpl(UserDAO dao) {
		super();
		this.dao = dao;
	}
	
	
	@Override
	public void add(User user) {
		// TODO Auto-generated method stub
		dao.addUser(user);
	}


}

对应着的配置文件:



	
	
	
		
	

3.不同属性的输入方式,只做了解  就是不只是能在配置文件中注入对象

简单属性注入:int,String,float
集合属性注入:Map,List,Set


4.scope属性的4.单实例和多实例

在bean标签的属性中有scope属性,可取值有singleton(单例),prototype(原型,模板),request,session,global session    默认是singleton。


单实例对象的意思就是:在使用该类实例时,都是同一个实例。比如像对数据进行操作的类DAO中没有定义成员属性,只是定义了一些对数据操作的方法,这样就可以设置为单实例类。



你可能感兴趣的:(xml配置spring IOC的细节和bean标签的一些属性)