spring 40天全程跟踪 第一天spring依赖注入控制反转

以前都是用MyEclipse集成开发,开发速度快,但是很多时候对本身的机制不是很了解,所以现在从头开始基本配置。

依赖注入和控制反转是同一个概念,在未使用spring情况下的时候,在调用一个类的时候,需要创建类的实例,然后才能使用。有了spring以后,这个类的创建的工作有spring完成,然后注入调用者。

设置注入方法:

main.java:
public static void main(String[] args) {
		ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/applicationContext.xml");
		People p = (People) ctx.getBean("axechinese");
		p.useAxe();
}
public interface People {
	public void useAxe();
}

public interface Axe {
	public void chop();
}
public class Chinese implements People {

	private Axe axe;
	
	@Override
	public void useAxe() {
		axe.chop();
	}

	public Axe getAxe() {
		return axe;
	}

	public void setAxe(Axe axe) {
		this.axe = axe;
	}

}
public class stone implements Axe {

	@Override
	public void chop() {
		System.out.println("stoneaxe chop");
	}

}
xml:文件:
<bean id="axechinese" class="com.mixian.axePeople.Chinese">
在这里将另一个bean注入给axechinese中 注意一定要有setAxe方法~
		<property name="axe">
			<ref local="stoneAxe"></ref>
		</property>
	</bean>
	
	<bean id="stoneAxe" class="com.mixian.axePeople.stone">
		
	</bean>

另一种方法:

 

ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/applicationContext.xml");
		Chinese p = (Chinese) ctx.getBean("axechinese");
		p.setAxe((Axe)(ctx.getBean("stone")));
		p.useAxe();

xml文件:
<!--构造传入  -->
	<bean id="axechinese" class="com.mixian.axePeople.Chinese">
		<constructor-arg><ref bean="stone"/></constructor-arg>
	</bean>	
	<bean id="stone" class="com.mixian.axePeople.stone"/>

 标准的构造传入:

ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/applicationContext.xml");
		Chinese p = (Chinese) ctx.getBean("axechinese");
	//	p.setAxe((Axe)(ctx.getBean("stone")));
		p.useAxe();

构造函数:
public class Chinese implements People {

	private Axe axe;
	
	public Chinese(){}
	
	public Chinese(Axe axe){
		this.axe = axe;
	}
	public Axe getAxe() {
		return axe;
	}

	public void setAxe(Axe axe) {
		this.axe = axe;
	}
	@Override
	public void useAxe() {
		axe.chop();
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值