spring篇(一)牛刀小试

spring大观园

1.什么是spring?
spring:是以interface21为基础,并不断的丰富其内涵的,由Rod Johnson创建的一个轻量级框架。(顺便提一句,这位大佬是悉尼大学的博士,然而他的专业不是计算机相关的,而是音乐学!!!
其根本使命是:解决企业级应用开发的的复杂性。
核心特征:IOC(控制反转)、AOP(面向切面)。
2.spring框架组成
在这里插入图片描述
在这里插入图片描述
3.spring的优势?
简化开发、实现解耦
AOP编程
支持声明式事务处理
方便程序测试
可以集成多种框架

spring IOC

1.什么是IOC?
IOC:全称 Inversion of Control,也叫“控制反转”,它还有一个别名“依赖注入(Dependency Injection)”.是一个轻量级的容器。
IOC的理念:简单点说,就是让别人为你服务!!!
IOC最权威的解释和总结,应该是Martin Fowler的那篇文章“Inversion of Control Containers and the Dependency Injection Pattern”翻译过来是:控制反转容器和依赖注入容器。
我个人对IOC理解:IOC 控制反转就是一种思想,有点像中介的感觉,就比如我们去买房,如果是自己去呢我们是不是要一个一个的去找,这样是不是很浪费我们的时间,但是你通过中介,你把要需要买的房的预期告诉他,就比如大小、地址、价格、装修等等。中介是不是就会去找合适的房子来供你参考啊!这样一来我们是不是大大缩短了时间成本。再深一点理解,中介就好比“IOC容器”,我们买房子的就是“被注入对象”,房子就是“被依赖的对象”,而房子的大小、价格、地段就是“依赖对象的参数”。IOC就是把传统上程序代码直接控制对象的调用权交给容器,通过容器来实现对对象的组件的管理和装配。在这里插入图片描述
2.依赖注入的三种方式?
2.1构造方法注入
构造方法注入:顾名思义,就是被注入的对象通过构造方法中声明被依赖对象的参数列表,让IOC容器知道它需要哪些依赖的对象。
例如:

public FXNewProvider(IFNewsListener newsListener,IFXNewspersister newsPersister){
    this.newsListener = newsListener;
    this.newsPersiter = newsPersister;
}

IOC Service Provider会检查被注入对象的构造方法,取得它需要的依赖对象列表,进而为其注入相应的对象,注意:同一个对象不可能同时被构造两次!!!
2.2setter方法注入
对于javaBean对象来说,通常会通过setxxx()和getxxx()来访问对应属性。这些setxxx()统称为setter方法。

public class Component{
		priavte Dog dog;
		
		public Dog setDog(Dog dog){
			this.dog = dog;
		}
 
 
		public doSomething(){
			dog.speek();
		}
	}

2.3接口注入
这个比起前两个稍微有点难。被注入的对象如果想要IOC Service Provider为其注入对象,就必须实现某个接口。而这个接口提供一个方法,用来为其注入依赖对象。IOC Service Provider最终通过这些接口了解被注入对象需要注入什么依赖对象。在这里插入图片描述

public interface InjectTion{//通用注入接口
		void injectA(Object obj); //其中obj的值通过容器设置
	}
	
	public class Component implements interface{
		priavte Dog dog;
		
		public void inject(Dog dog){//实现注入方法
			this.dog = dog;
		}
 
 
		public doSomething(){
			dog.speek();
		}
	}

2.4三种注入方式的比较
接口注入不提倡,退役状态。它强制注入对象实现不必要的接口,带有侵入性。
构造方法注入
优点:对象在构造完成后,已进入就绪状态,可以马上使用。
缺点:(i)依赖对象多的时候,构造方法的参数列表较长。
(ii)通过反射构造对象时,对相同类型的参数处理会比较困难,维护和使用比较麻烦。
(iii)在java中,构造方法无法继承,无法设置默认值。
setter方法注入
优点:(i)在描述性比构造方法注入要好一点。
(ii)setter方法可以被继承,允许设置默认值。
(iii)具有良好的IDE支持。
缺点:对象无法在构造完成后,马上进入就绪状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小倪长头发啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值