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)?的更多相关文章

  1. Spring AOP(aspect oriented programming) 转载

    1.面向切面的基本原理 软件系统可以看成是由一组关注点组成的,其中,直接的业务关注点,是直切关注点.而为直切关注点提供服务的,就是横切关注点. 01.什么是面向切面编程 横切关注点:影响应用多处的功能 ...

  2. 面向切面编程 ( Aspect Oriented Programming with Spring )

    Aspect Oriented Programming with Spring 1. 简介 AOP是与OOP不同的一种程序结构.在OOP编程中,模块的单位是class(类):然而,在AOP编程中模块的 ...

  3. 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-简介

    本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 简介 Aspect-Orie ...

  4. 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-使用工厂创建代理(Using the ProxyFactoryObject to create AOP proxies)

    本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 如果你正在为你的业务模型使用 ...

  5. Spring学习笔记:面向切面编程AOP(Aspect Oriented Programming)

    一.面向切面编程AOP 目标:让我们可以“专心做事”,避免繁杂重复的功能编码 原理:将复杂的需求分解出不同方面,将公共功能集中解决 *****所谓面向切面编程,是一种通过预编译方式和运行期动态代理实现 ...

  6. Spring之 Aspect Oriented Programming with Spring

    1. Concepts Aspect-Oriented Programming (AOP) complements OOP by providing another way of thinking a ...

  7. 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-切入点(pointcut)API

    本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 让我们看看 Spring.N ...

  8. [Spring] Aspect Oriented Programming with Spring | AOP | 切面 | 切点

    使用Spring面向切面编程 1.介绍 AOP是OOP的补充,提供了另一种关于程序结构的思路. OOP的模块化的关键单位是 类 . AOP的则是aspect切面. AOP 将程序的逻辑分成独立的块(叫 ...

  9. 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-通知(Advice)API

    本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 让我们看看 Spring.N ...

  10. Spring面向切面编程(AOP,Aspect Oriented Programming)

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. ...

随机推荐

  1. 一步一步带你安装史上最难安装的 vim 插件

    YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.参考: https://github ...

  2. .npy文件怎么打开

    import numpy as np test = np.load(r'C:\Users\SAM\PycharmProjects\TEAMWORK\Preprocess_3D\muchdata-50- ...

  3. 阅读之web应用安全

    一.三种坏人与servlet安全 认证可以防止“假冒者”攻击,授权可以防止“非法升级者”攻击,机密性和数据完整性可以防止“窃听者”攻击. 二.认证与授权 Web容器进行认证与授权的过程: 客户端:浏览 ...

  4. 32. ClustrixDB License管理

    一.许可的概述 ClustrixDB必须拥有有效的许可证才能运行.本授权指定: 集群中允许的最大节点数 ClustrixDB将使用的最大核数 在裸金属系统上,ClustrixDB将尝试启用与已授权的物 ...

  5. K8S中DaemonSet

    DaemonSet DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本.当有 Node 加入集群时,也会为他们新增一个 Pod .当有 Node 从集群移除时,这些 Pod ...

  6. 关于在mac上使用valet集成环境添加memcache扩展

    由于业务要求需要使用到memcache,直接使用brew安装在phpinfo上面显示并没有加载成功,使用以下方法时我们需要先卸载之前已经安装完成的memcache brew unlink php70- ...

  7. Python3中tornado高并发框架

    1.单线程tornado.web:基础web框架模块tornado.ioloop:核心IO循环模块,高效的基础.封装了:1.asyncio 协程,异步处理2. epoll模型:水平触发(状态改变就询问 ...

  8. 微信小程序_(校园视)开发视频的展示页_上

    微信小程序_(校园视) 开发用户注册登陆 传送门 微信小程序_(校园视) 开发上传视频业务 传送门 微信小程序_(校园视) 开发视频的展示页-上 传送门 微信小程序_(校园视) 开发视频的展示页-下 ...

  9. [CSP-S模拟测试]:B(DP+数学)

    题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...

  10. IP输出 之 分片ip_fragment、ip_do_fragment

    概述 ip_fragment函数用于判断是否进行分片,在没有设置DF标记的情况下进入分片,如果设置了DF标记,则继续判断,如果不允许DF分片或者收到的最大分片大于MTU大小,则回复ICMP,释放skb ...