Spring核心--IOC&AOP
Ioc(控制反转)
所谓的控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。
AOP(面向切面编程)
AOP(Aspect Orient Programming),即面向方面编程。AOP技术给人们提供了一个崭新的视角分析和设计软件系统。AOP引入了分离关注点形成模块化的机制来解决横切关注点的问题。所谓的关注点指的是一个特定的概念、目标或可实现域。系统正是由一组关注点组成,典型的软件系统由多个系统级关注点和核心级关注点组成。核心关注点指业务处理的主要过程,而系统级关注点是与核心业务无关,一般横切多个核心关注点,为这些核心关注点提供服务,如日志记录,安全检测、事务处理等。AOP和OOP互为补充,从两种不同的角度去认识事物。传统的OOP[4lJ编程是以对象为核心,系统由一系列相互依赖的对象组成,抽象的封装好这些对象的属性和行为,使得这些对象可以相互协作的完成特定的业务逻辑,从而完成一个完整的应用系统。但随着软件系统的不断扩大,系列化分工越来越细,对跨越多个模块的行为进行建模是,OOP暴露出了一些无法很好解决的问题。OOP的核心是采用的纵向结构去完成业务逻辑(也可理解为关注点),很多不同模块可能具有相同的关注点(横切关注点),OOP处理起来较为繁琐,模块间的耦合度大,后期维护和扩展比较困难。AOP的核心是允许我们独立的完成一个个关注点,然后以一种松耦合的方式把这些单独的关注点编织成一个完整的系统,形成了一种模块化横切关注点的方式。与OOP相对,AOP采用的是横向结构,例如,多个模块具有某个相同操作,这个操作就可以视为系统中的一个“横切关注点”。简单地说,AOP就是将那些与业务无关,却为业务处理模块共同服务的诸如并发访问控制的一些系统关注点(通用的功能需求),从不相关的的类之间分离出来,在某个地方集中编写,组织和维护,并可以通过如AspectJ等工具将它们织入到系统出供业务对象使用。这是系统建模中抽象层次的进一步提升,可以得到结构清晰、模块化强、代码问耦合度低、易于重用和维护的系统。
Spring核心--IOC&AOP的更多相关文章
- Spring核心框架 - AOP的原理及源码解析
一.AOP的体系结构 如下图所示:(引自AOP联盟) 层次3语言和开发环境:基础是指待增加对象或者目标对象:切面通常包括对于基础的增加应用:配置是指AOP体系中提供的配置环境或者编织配置,通过该配置A ...
- Spring核心 IoC和AOP原理
1. 什么是Spring Spring是一个轻量的Java开源框架,它简化了应用开发,实现基于POJO的编程模型.它的两大核心是:IoC(控制反转),AOP(面向切面编程). 2. IoC控制反转 简 ...
- Spring核心--IOC
先说说Spring框架 Spring框架 Spring框架的作用 Spring 的核心(IOC功能) SpringAOP功能 原有的业务流程:请求->servlet-->service-- ...
- Spring核心框架 - AOP的起源及介绍
一.AOP技术起源 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析.他们研究出了一 ...
- Spring Core Programming(Spring核心编程) - AOP Concepts(AOP基本概念)
1. What is aspect-oriented programming?(什么是面向切面编程?) Aspects help to modularize cross-cutting concern ...
- Spring(二)--IoC&AOP
IOC 一.IOC概述: 一般指控制反转(inversion of Control),把创建对象的权利交给框架,Ioc容器控制对象,是框架的重要特征,并非是面向对象编程的专用术语.它包括依赖注入(DI ...
- Spring核心框架 - AOP之动态代理机制
动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码.动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类. ...
- spring核心之AOP学习总结二
一:springAOP常用的注解 @Aspect:声明方面组件 @Before:声明前置通知 @After-returning:声明后置通知 @After:声明最终通知 @Around:声明环绕通知 ...
- spring核心之AOP学习总结一
一:springAOP前置通知.后置通知以及最终通知 前置通知就是在切入点前面执行方面体,后置就是在后面,最终就是返回之后. 下面以一个日志记录的案例介绍: 1:创建controller类 /** * ...
随机推荐
- 前端学习---css基本知识
css基本知识 我们先看一个小例子: <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- Idea搭建Scala开发环境的注意事项
Idea搭建Scala开发环境的注意事项 1.下载ideaIC-2017.3.tar.gz 2.解压安装idea 3.File->setting->plugins 下载2个插件scala. ...
- java基础之io流总结二:File类基本应用
File类的概述: File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹. File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读 ...
- 关于recv的返回值
通常recv有几种返回值 1.==0 表示收到FIN包, 因为FIN包,是状态为标记为FIN的空包,没有携带数据,所以recv的长度为0 2.>0 表示收到了数据, 但是有没有收完,是不知道的 ...
- c语言实践打印字母三角形
效果如下: int main(void) { char ch = 'A';//当前要打印的字符 ;//每行要打印字符的个数 ; i < ; i++,count++) { ; j < cou ...
- JAVA中mark()和reset()用法
根据JAVA官方文档的描述,mark(int readlimit)方法表示,标记当前位置,并保证在mark以后最多可以读取readlimit字节数据,mark标记仍有效.如果在mark后读取超过rea ...
- Filter过滤器简单学习
Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法: 序号 方法 & ...
- T-SQL分页功能存储过程
分页功能存储过程 ALTER PROCEDURE [dbo].[P_SplitPagesQuery] @TablesName NVARCHAR(MAX),--表名或视图名(只能传单一表名) @PK N ...
- CodeForces 489E Hiking (二分+DP)
题意: 一个人在起点0,有n个休息点,每个点有两个数值,分别表示距离起点的距离xi,以及所获得的愉悦值bi,这个人打算每天走L距离,但实际情况不允许他这么做.定义总体失望值val = sum(sqrt ...
- HDU 6034 Balala Power! (贪心+坑题)
题意:给定一个 n 个字符串,然后问你怎么给 a-z赋值0-25,使得给定的字符串看成26进制得到的和最大,并且不能出现前导0. 析:一个很恶心的题目,细节有点多,首先是思路,给定个字符一个权值,然后 ...