Spring是什么? 什么是IOC(Inversin of control)? 什么是AOP (Aspect-Oriented Programming)?
spring是一个开源容器框架,可以接管web层、service层、dao层、持久层的组件,spring底下是一个bean工厂,用户产生各种bean,spring可以配置各种bean,和维护bean与bean之间的管辖,其核心就是控制反转IOC和面向切面AOP。
什么是IOC(Inversin of control)?
在以往的工厂模式中,我们创建一个对象都是以new的形式创建一个新的对象,而在spring中,所有的对象都是以bean的形式存在,由spring控制bean对象的产生,这样的控制权改变的情况,我们称为控制反转。
什么是AOP (Aspect-Oriented Programming)?
AOP,面向切面编程,通过配置文件来实现模块和模块、对象和对象的分离,在这种工作模式下,我需要一个业务功能时,不需要再去编写它的java类,而只需要调用它暴露的接口即可,这样可大大降低开发成本以及开发周期。在AOP中,有两种代理模式,一种是静态代理,一种是动态代理。静态代理中,可以针对每一个具体的类分别编写代理类,也可以针对一个接口编写一个代理类。在动态代理中,针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各个接口动态生成相应的代理类。
spring的核心机制:依赖注入
其实不管是依赖注入DI(Dependency Injection)还是控制反转,其含义是完全相同的。
当某个java实例(调用者)需要调用另一个java实例(被调用者)时,在传统情况下,通常情况下,通过调用者来创建被调用者的实例,通常通过new来创建,而在依赖注入的模式下,创建被调用者的工作不在由调用者来完成,因此称之为“控制反转”,创建被调用者实例的工作通常由spring来完成,然后注入调用者,所以也称为“依赖注入”。
依赖注入一般有3种方式:setter interface constructor
设置注入:IOC容器使用属性的setter方式注入被依赖的实例。<property name = "" ref = "">
构造注入:IOC容器使用构造器来注入被依赖的实例。 <constructor-arg ref = "">
配置构造注入的时候可以配置index属性,用于指定该构造参数值作为第几个构造参数值,下标从0开始。
spring有2个核心接口:BeanFactory 和 AppilicationContext(基于XML),其中ApplicationContext是BeanFactory的子接口,他们都可以代表spring容器。
spring框架的7个模块:
spring-core 核心容器提供spring框架的基本功能,核心容器的主要组件是BeanFactory,它是工厂模式的实现,BeanFactory使用控制反转模式将应用程序的配置和依赖性规范与实际的应用程序代web码分开。
spring-context
上下文,spring上下文是一种配置文件,向spring框架提供上下文信息,spring上下文信息包括企业服务,如JNDI\EJB\电子邮件\校验\调度等
spring-aop
通过配置管理特性,spring-aop模块直接将面向切面的编程功能集成到spring框架中,所以很容易使spring框架的管理的任何对象支持aop
spring-dao
spring-orm
spring-web
spring-mvc
Spring是什么? 什么是IOC(Inversin of control)? 什么是AOP (Aspect-Oriented Programming)?的更多相关文章
- Spring AOP(aspect oriented programming) 转载
1.面向切面的基本原理 软件系统可以看成是由一组关注点组成的,其中,直接的业务关注点,是直切关注点.而为直切关注点提供服务的,就是横切关注点. 01.什么是面向切面编程 横切关注点:影响应用多处的功能 ...
- 面向切面编程 ( Aspect Oriented Programming with Spring )
Aspect Oriented Programming with Spring 1. 简介 AOP是与OOP不同的一种程序结构.在OOP编程中,模块的单位是class(类):然而,在AOP编程中模块的 ...
- 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-简介
本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 简介 Aspect-Orie ...
- 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-使用工厂创建代理(Using the ProxyFactoryObject to create AOP proxies)
本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 如果你正在为你的业务模型使用 ...
- Spring学习笔记:面向切面编程AOP(Aspect Oriented Programming)
一.面向切面编程AOP 目标:让我们可以“专心做事”,避免繁杂重复的功能编码 原理:将复杂的需求分解出不同方面,将公共功能集中解决 *****所谓面向切面编程,是一种通过预编译方式和运行期动态代理实现 ...
- Spring之 Aspect Oriented Programming with Spring
1. Concepts Aspect-Oriented Programming (AOP) complements OOP by providing another way of thinking a ...
- 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-切入点(pointcut)API
本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 让我们看看 Spring.N ...
- [Spring] Aspect Oriented Programming with Spring | AOP | 切面 | 切点
使用Spring面向切面编程 1.介绍 AOP是OOP的补充,提供了另一种关于程序结构的思路. OOP的模块化的关键单位是 类 . AOP的则是aspect切面. AOP 将程序的逻辑分成独立的块(叫 ...
- 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-通知(Advice)API
本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 让我们看看 Spring.N ...
- Spring面向切面编程(AOP,Aspect Oriented Programming)
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. ...
随机推荐
- centos7编译安装php7.3
处理问题 解决php configure: error: Cannot find ldap libraries in /usr/lib.错误 cp -frp /usr/lib64/libldap* ...
- nginx 访问控制模块
截图,代码截屏均引用自慕课网nginx相关教学视频 基于用户的访问控制模块 http_access_module 基于用户登录信任的模块 http_access_module 参数示意:address ...
- BZOJ 3594: [Scoi2014]方伯伯的玉米田 (二维树状数组优化DP)
分析 首先每次增加的区间一定是[i,n][i,n][i,n]的形式.因为如果选择[i,j](j<n)[i,j](j<n)[i,j](j<n)肯定不如把后面的全部一起加111更优. 那 ...
- SQL 修复表
alter database dcdata set single_user with rollback immediate设置为单用户模式然后执行修复.DBCC CHECKTABLE(ZLBZSGPH ...
- Servlet中的请求转发RequestDispatcher接口的forword与Include的区别
RequestDispatcher接口中具有两个方法: forward() 与 include() 均 可完成请求 的转发.区别如下: forword(): 使用该方法,则当前 的 Servlet 中 ...
- [Linux]ubuntu16.04 nginx彻底删除与重新安装
nginx彻底删除与重新安装 查看nginx正在运行的进程,如果有就kill掉 sudo netstat -ntlp | grep nginx sudo kill -9 进程id 删除nginx,pu ...
- python学习用到的网站
官方地址:https://www.python.org/ 玩蛇网:http://www.iplaypython.com/
- mysql中in查询中排序
mysql中in查询条件的时候,很多时候排序是不规则的,如何按照in里面的条件进行排序呢? mysql中给出了办法,在in后面加order by field,order by field的首个条件是按 ...
- iOS开发之实现图片自动切换(类似android画廊效果)
#import ViewController.h #define ImageViewCount 5 @interface ViewController ()<uiscrollviewdele ...
- Spring Boot教程(三十四)使用Redis数据库(2)
除了String类型,实战中我们还经常会在Redis中存储对象,这时候我们就会想是否可以使用类似RedisTemplate<String, User>来初始化并进行操作.但是Spring ...