一、Spring注入依赖

一、注入依赖(Dependency Injection)

  ● 目的:使相互协作组件保持松散耦合。

  ● 实现原理:通过Spring容器创建对象的实例,而不是由业务创建。使业务不用关心业务之外的事情。


二、创建Spring项目

1、Spring项目也可向Java项目一样运行,所以这里创建Java项目。只说明与Java项目有区别的。

          

  • 这里只需注意五个地方:A类、B类、myMain类、myconfig配置、创建的文件夹lib
2、加入Spring依赖包
  • 创建文件夹lib,右击mySpring项目,选择Properties,弹出的界面选择Java Build Path,如下图:

  • 选择Add External JARs...导入下载的Spring包,Apply后关闭
  • 其他的跟创建Java项目一样


三、实例

1、A类-实现业务打印,并调用B类的函数。B类对象在myconfig.xml通过Spring创建。

package one.dependencyInjection;

public class A {
	private B b;
	
	public A(B b) {
		this.b=b;
	}
	
	public void print() {
		System.out.println("调用A类的print方法,但实际是B类的");
		b.print();
	}
}

2、B类-也是一个业务,但与A不是同一业务。PrintStream类对象在myconfig.xml通过Spring创建。

package one.dependencyInjection;

import java.io.PrintStream;

public class B {

	private PrintStream stream;
	
	public B(PrintStream stream) {
		this.stream=stream;
	}
	
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("调用B类的print方法");
	}
	
}
3、 注入Bean配置myconfig.xml。创建bean(即B类实例和PrintStream类实例),每一个<bean>标签代表一个实例。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
   
   <bean id="a" class="one.dependencyInjection.A">
   		<constructor-arg ref="b" />
   </bean>
   
   <bean id="b" class="one.dependencyInjection.B">
   		<constructor-arg value="#{T(System).out}" />
   </bean>
  
   
</beans>
  • <beans>内的是约束,这里是创建bean所需声明(我猜是Spring的API)。
  • <bean id="a" ... </bean>:表示A类的实例
  • <bean id="b" ... </bean>:表示B类的实例
  • <constructor-arg ref="b" />:表示向所在类(这里是A类)的构造方法注入id为b的bean。
  • <constructor-arg value="#(T(System).out)" />:表示向所在类(这里是B类)的构造方法注入值为System.out的bean。

4、运行类-myMain类

package one.dependencyInjection;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class myMain {
	
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("myconfig.xml");
		A a= (A) context.getBean(A.class);
		a.print();
		
		context.close();
	}
}
  • ClassPathXmlApplicationContext是用于加载类路径下配置文件,所以注意myconfig的存放路径
  • context.getBean(A.class):获取A类对象


四、项目下载

    如果再不行就去下载项目吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值