Spring入门教程(一)IOC 基本概念

上来直接干货:一点基础知识


Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,主要是为了解决企业开发的复杂性。

 

IOC(Inverion of Control):是Spring核心,控制权的转移,应用程序本身不负责对象的创建和维护,而由Spring外部容器负责。解决了传统开发中的对象之间的相互依赖关系复杂的问题。IOC又被称为DI(DependencyInjection),所谓依赖注入就是在IOC容器在运行期间,把某种依赖关系注入到对象中。实际上,IOC和DI是从不同的方面说的同一个过程,通过引入IOC容器,利用注入的方式,实现对象的解耦。

 

Spring 用bean来管理对象,xml文件来配置(或者注解)。


下面来看一个简单的入门demo:


先是写一个接口:

package com.hanchun.springdemo;

/**
 *基于接口编程 
 */
public interface SayHello {
	
	public String sayHello();
}


然后分别写两个不同的实现类:

package com.hanchun.springdemo;

/**
 *实现SayHello接口
 */
public class ChineseHello implements SayHello{

	@Override
	public String sayHello() {
		return "你好,我的朋友!";
	}
}

package com.hanchun.springdemo;

/**
 *实现SayHello接口
 */
public class AmericanHello implements SayHello {

	@Override
	public String sayHello() {
		return "Hello, my friend!";
	}
	
}

再者是一个Person类:

package com.hanchun.springdemo;

public class Person {
    //SayHello的引用,具体指向哪个,由spring配置文件决定
	SayHello sayHello;

	public SayHello getSayHello() {
		return sayHello;
	}

	public void setSayHello(SayHello sayHello) {
		this.sayHello = sayHello;
	}
	
	public String sayHello(){
		//调用配置文件里指定的对象的sayHello()方法
		return this.sayHello.sayHello();
	}
}

再写一个Test类:

package com.hanchun.springdemo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
	
	public static void main(String[] args){
	//上下文对象
	ApplicationContext context = new ClassPathXmlApplicationContext("hello.xml");   
	//通过ApplicationContext拿到相应的bean
	SayHello helloBean = (SayHello)context.getBean("chineseHello");
//	SayHello helloBean = (SayHello)context.getBean("americanHello"); 
	System.out.println(helloBean.sayHello());
	}
}

最后附上配置文件(就本测试,建议摆放到src目录下):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="chineseHello" class="com.hanchun.springdemo.ChineseHello"></bean>
	<bean id="americanHello" class="com.hanchun.springdemo.AmericanHello"></bean>
	<bean id="person" class="com.hanchun.springdemo.Person">
	    <property name="sayHello" ref="chineseHello"/>  <!--注意这边的注入操作 -->
	</bean>
</beans>



我想程序的意图很明显了:并没有通过new出SayHello具体实现类,而是通过交给Spring容器去自动在需要的时候注入。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值