Spring学习之——注入方式(上)

在学习注入方式之前,这里本来要先学习一下bean.xml配置文件的属性作用,但是我觉得只是单纯的介绍bean的一些属性,很枯燥并且又不太容易具体的理解,所以我打算在学习注入方式的时候将bean配置的一些属性介绍顺便穿插进去,这样结合具体的示例程序可能理解起来更加容易,好了,开始我们今天的学习。很多的资料介绍Spring的注入方式都是说有三种:接口注入,构造注入,Setter注入。但是对于接口注入的表达都不太清晰,所以我便查阅了Spring2.5的官方手册,发现并没有这种明确的划分,所以我这里也遵循官方文档中的介绍,来一步一步的学习。首先是构造注入,所谓构造注入,简单的说就是运用构造器的方式注入。
下面这个示例程序,实现对基本数据类型的构造注入:

Java类:

package cn.com.spring.bean;

public class ExampleBean {
	
	private int i;
	private String s;
	private long l;
	private char c;
	private boolean flag;
	private short sh;
	private double d;
	private float f;
	
	
	public ExampleBean(int i, String s, long l, char c, boolean flag, short sh, double d, float f){
		this.i = i;
		this.s = s;
		this.l = l;
		this.c = c;
		this.flag = flag;
		this.sh = sh;
		this.d = d;
		this.f = f;
	}

	
	public String toString() {
		String str = "int i: "+String.valueOf(i)+"\nString s: "+s+"\nlong l: "+l+"\nchar c: "+c+"\nboolean flag: "+String.valueOf(flag)+"\nshort sh: "+sh+"\ndouble d: "+d+"\nfloat f: "+f;
		return str;
	}
}

bean配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
	<description>Spring Quick Start!!</description>
	
	<bean id="exampleBean" class="cn.com.spring.bean.ExampleBean">
		<constructor-arg type="int" value="100"/>
		<constructor-arg type="java.lang.String" value="test"/>
		<constructor-arg type="long" value="25000"/>
		<constructor-arg type="char" value="c"/>
		<constructor-arg type="boolean" value="false"/>
		<constructor-arg type="short" value="88"/>
		<constructor-arg type="double" value="88.88"/>
		<constructor-arg type="float" value="88.8"/> 
	</bean>

</beans>

测试程序,我这里依然选择使用Junit来进行测试,测试程序如下:

package cn.com.spring.test;

import junit.framework.TestCase;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import cn.com.spring.bean.ExampleBean;

public class TestUtils extends TestCase {
	private ApplicationContext actx = new FileSystemXmlApplicationContext("bean.xml");
	@Test
	public void test1(){
		ExampleBean exampleBean = (ExampleBean)actx.getBean("exampleBean");
		System.out.println(exampleBean.toString());
	}
	
	
}

通过运行得到的结果如下:
int i: 100
String s: test
long l: 25000
char c: c
boolean flag: false
short sh: 88
double d: 88.88
float f: 88.8 

以上就是构造注入对于基本类型的实现方式。

这里Spring支持三种不同的bean配置文件的书写方式,本例中可将bean配置文件改写成以下两种方式,都是可以的

一种是:

<bean id="exampleBean" class="cn.com.spring.bean.ExampleBean">
		<constructor-arg type="int">
		<value>100</value>
		</constructor-arg>
		<constructor-arg type="java.lang.String">
		<value>test</value>
		</constructor-arg>
		<constructor-arg type="long">
		<value>25000</value>
		</constructor-arg>
		<constructor-arg type="char">
		<value>c</value>
		</constructor-arg>
		<constructor-arg type="boolean">
		<value>false</value>
		</constructor-arg>
		<constructor-arg type="short">
		<value>88</value>
		</constructor-arg>
		<constructor-arg type="double">
		<value>88.88</value>
		</constructor-arg>
		<constructor-arg type="float">
		<value>88.8</value>
		</constructor-arg>
	</bean>

另外一种就是:

<bean id="exampleBean" class="cn.com.spring.bean.ExampleBean">
		<constructor-arg index="0" value="100"/>
		<constructor-arg index="1" value="test"/>
		<constructor-arg index="2" value="25000"/>
		<constructor-arg index="3" value="c"/>
		<constructor-arg index="4" value="false"/>
		<constructor-arg index="5" value="88"/>
		<constructor-arg index="6" value="88.88"/>
		<constructor-arg index="7" value="88.8"/> 
	</bean>

事实上通过以上的演示,大家很容易看出还存在另外一种组合,就是将第二种的type属性替换成最后一种的index属性,经测试也是没问题的,这里就不贴出了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值