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类 /** * ...
随机推荐
- 1 响应式页面-@media介绍,
我们为什么要写自适应的页面(响应式页面) 众所周知,电脑.平板.手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢 ...
- 什么是jsonp?——使用jsonp解决跨域请求问题
我们在使用ajax请求的时候经常会产生跨域问题,这是由于浏览器的同源策略导致的.所谓同源,即域名.协议.端口均相同,否则不管是静态页面还是动态网页或者web服务都无法通过ajax正常请求.有时候,我们 ...
- Python 的mock模拟测试介绍
如何不靠耐心测试 可能我们正在写一个社交软件并且想测试一下"发布到Facebook的功能",但是我们不希望每次运行测试集的时候都发布到Facebook上. Python的unitt ...
- localtime 的性能问题及其替代者
在系统从redhat5升到redhat6的过程中,服务的性能差了很多.经过定位发现是程序中频繁调用localtime/localtime_r所致. 而调用localtime_r 的实现中,对时区进行了 ...
- 解决 Python 连不上pip库的问题(使用国内镜像地址)
经常在使用python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上 ...
- Idea的基本介绍
Idea的基本介绍 Idea一般是作为一个Java和Scala的开发工具来使用的,它的使用方法和Eclipse有一些不同,这里记录以下一些基本点. 1.创建项目 创建一个新项目的时候,用户必须选择一个 ...
- Spring Bean定义的三种方式
<!--Spring容器启动配置(web.xml文件)--> <context-param> <param-name>contextConfigLocation&l ...
- laravel 验证表单信息
1控制器验证 $this->validate($request,[ 'Student.name'=>'required|min:2|max:20', 'Student.age'=>' ...
- android样式相关
转载自Keegan小钢,原文链接http://keeganlee.me/post/android/20150830
- 小程序为什么脚本内不能使用window等对象
小程序(应用号)内不能使用window等对象. 页面的脚本逻辑在是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能再脚本中使用window,也无法在脚本中操作组件.