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的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. ...
随机推荐
- 使用powershell的remove
使用Remove-Module -Name Functions2 只是移除当前会话的模块 并且Import-Module -Name Functions2与 Remove-Module -Name F ...
- 源码安装 qemu-2.0.0 及其依赖 glib-2.12.12
源码安装qemu-2.0.0 下载源代码并解压 http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2 .tar.gz 编译及安装: cd q ...
- MySQL 关于视图的操作
-- 视图就是一条select 语句 执行后返回结果集,是一种虚拟表,是一个逻辑表 -- 方便操作,减少复杂的SQL语句,增加可读性,更加安全一些 create view demo_view as s ...
- Acwing-196-质数距离(素数区间筛法)
链接: https://www.acwing.com/problem/content/198/ 题意: 给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C ...
- docker 部署springcloud Feign组件无法访问问题
如题: docker部署后的服务注册ID是这样的. 这导致了Feign在调用其他组件的时候访问不到. 解决: 在docker部署指令添加EUREKA_INSTANCE_IP-ADDRESS=[你的IP ...
- 交换机配置—— 结合以太通道的VLAN配置
一.实验目的:建立以太通道使相同VLAN下主机互通 二.拓扑图如下 三.具体步骤如下 (1)S1三层交换机配置 Switch>enableSwitch#config terminalEnter ...
- java中MD5函数
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5U ...
- windows下我的工作环境
目录 前言 需要的软件 环境 插件 快捷键 前言 为了更好地训练,所以机房把系统刷成了noi linux+win7 但是我理想的工作环境是 ubuntu16.04 及以上或 win10. 平时用noi ...
- 21.Python算术运算符及用法详解
算术运算符是处理四则运算的符号,在数字的处理中应用得最多.Python 支持所有的基本算术运算符,如表 1 所示. 表 1 Python常用算术运算符 运算符 说明 实例 结果 + 加 12.45 + ...
- Oracle实现分页,每页有多少条记录数
分页一直都是关系数据库的热门,在数据量非常多的情况下,需要根据分页展示,每页展示多少条记录,以此减轻数据的压力; 1实现原理,根据rownum取记录数,根据公式(页数-1)*每页想要展示的记录数 AN ...