Spring一些基本概念
轻量级
组件小,库小
Spring
在某种意义上是
EJB
的替代品,她是一种轻量级的容器。用过
EJB
的人都知道
EJB
很复杂,为了一个简单的功能你不得不编写多个
Java
文件和部署文件,他是一种重量级的容器。
非入侵式
重量级容器是一种入侵式的,也就是说你要用
EJB
提供的功能就必须在你的代码中体现
出来你使用的是
EJB
,比如继承一个接口,声明一个成员变量。这样就把你的代码绑定在
EJB
技术上了
相对而言“轻量级”就是非入侵式的,用
Spring
开发的系统中的类不需
要依赖
Spring
中的类,不需要容器支持(当然
Spring
本身是一个容器),而且
Spring
的大小和运行开支都很微量
容器
为容器提供一个运行环境,
IOC/DI
IoC
的全称是
Inversion of Control
,中文翻译反向控制或者逆向控制
反转控制,另一个名字依赖注入,
控制权的转移即是所谓的反转。
依赖注入
为调用者对象设置被调用者对象
接口注入
构造注入
设置注入
(set/get)
AOP
AOP
全称是
Aspect-Oriented Programming
,中文翻译是面向方面的编程或者面向切面的编程。
你应该熟悉面向过程的编程,面向对象的编程,但是面向切面的编程你也许是第一次听说
POJO
我所看到过的
POJO
全称有两个,
Plain Ordinary Java Object
,
Plain Old Java
Object
,两个差不多,意思都是普通的
Java
类,所以也不用去管谁对谁错。
POJO
可以看做是简单的
JavaBean
(具有一系列
Getter
,
Setter
方法的类)。严格区分
这里面的概念没有太大意义,了解一下就行。
应用
Spring
中的切面
Spring
生来支持
AOP
,首先来看几个概念:
1、
切面(
Aspect
):
切面是系统中抽象出来的的某一个功能模块,上文已经有过介绍,这里不再多说。
2
、 通知(
Advice
)
:
通知是切面的具体实现。也就是说你的切面要完成什么功能,具体怎么做就是在通知里面完成的。这个名称似乎有点让人费解,等后面看了
代码就明白了。
3
切入点(
Pointcut
):
切入点定义了通知应该应用到系统的哪些地方。
Spring
只能控制到方法(有的
AOP
框架可以控制到属性),也就是说你能在方法调用之前或者之后选择切入,执行额外的操作。
2、
目标对象(
Target
):
目标对象是被通知的对象。它可以是任何类,包括你自己
编写的或者第三方类。有了
AOP
以后,目标对象就只需要关注自己的核心业务,其他的功能,比如日志,就由
AOP
框架支持完成。
3、
代理(
Proxy
)
:
简单的讲,代理就是将通知 应用到目标对象后产生的对象。
Spring
在运行时会给每个目标对象生成一个代理对象,以后所有对目标对象的操作都
会通过代理对象来完成。只有这样通知才可能切入目标对象。对系统的其他部
分来说,这个过程是透明的,也就是看起来跟没用代理一样。
“连接点(
Jointpoint
)??