Spring Framework学习
Spring框架对于java程序员的意义非常特殊,不会Spring的java程序员基本上可以认为就是不会java,因此掌握Spring框架显得尤为重要
Spring框架提供了两样重要的功能 – IOC AOP
IOC(Inversion of Control)
IOC的直译便是控制反转,既然有一个反转,那么就必然有一个与之对立的使用方式,即正向使用,那么什么是正向使用?
Object o = new Object();
这就是一段正向使用,很多人认为,这不是很正常的一种使用方式么?如果将代码扩展成如下的样子再来看呢?
public class A{
public void a(){
B b = new B();
C c = new C();
D d = new D();
}
}
这个时候,类A就直接向B\C\D三个类产生了强耦合,如果类D是来自于D.jar包里的不推荐使用的类呢?在某天,D.jar的开发者将这个类移除,那么我们的A类是不是也得跟着去修改?
在此基础上,spring提供了一整套的解决方案,即IOC,由spring来管理对象的创建销毁等过程,这就是一个最简单的IOC的定义,spring的IOC是基于java反射的实现
AOP (Aspect Oriented Programming)
AOP 面向切面编程,在以往传统的自顶向下的编程模型中,提供了另一种解决思路,以往对某个方法的处理时长可能都需要在方法前后加上如下片段
public void m(){
long start = System.currentTimeMillis();
//do something
long end = System.currentTimeMillis();
System.out.println("程序运行了"+(end-start)+"MS");
}
而有了切面之后 ,可以通过切面的方式,将这些散落在各处的通用逻辑抽到某处,在功能运行的过程中去将这些功能偷偷的加到原有方法内,而又不对原有方法产生侵入,这个神奇的功能就是通过动态代理来实现的
走进科学之Spring源码环境构建
这好像也是很多人突发奇想,我不能就此沉沦,我要雄起,我要阅读Spring源码!
但是github代码太多下载老断,下载完编译不成功等等等等
那就从代码下载与准备环境开始吧