spring、AOP、IOC

对spring的理解是什么?

spring:

1、开源框架;

2、IOC(控制反转),将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合;

3、AOP将安全、事务等于程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性。

spring是一个轻型容器,其核心是bean工厂,用以构造我们所需要的Model。在此基础之上,spring提供了aop的实现,用他来提供非管理环境下申明方式的事务、安全等服务;对bean工厂的扩张applicationContext更加方便我们实现j2ee的应用;

DAO/ORM的实现方便我们进行数据库的开发;

spring 的优点

1、降低了组件之间的耦合性,实现了软件各层之间的解耦;

2、可以使用容易提供的众多服务,如事务管理、消息服务等;

3、容器提供单例模式支持

4、容器提供了AOP计算,利用它很容易实现如权限拦截、运行期监控等功能;

5、容器提供了众多的辅助类,能加快应用的开发;

6、spring对于主流的应用框架提供了集成支持,如Hibernate、JPA、Struts等;

7、spring属于低侵入式设计,代码的污染极地;

8、独立于各种应用服务器

9、spring的DI机制降低了业务对象替换的复杂性;

10、spring的高度开放性,并不强制应用完全依赖于spring,开发者可以自由选择spring的部分或全部

AOP,面向切面编程完善spring的依赖注入(DI),面向切面编程在spring中主要表现为2个方面

1、面向切面编程提供声明式事务管理;

2、spring支持用户自定义的切面;

面向切面的编程是丢面向对象编程(oop)的补充,

面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。

AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,AOP是动态的抽象,

是对应用执行过程中的步骤进行抽象,从而获取步骤之间的逻辑划分

AOP,面向切面编程。AOP适合于那些具有横切逻辑的应用:如性能监测、访问控制、事务管理、缓存、对象池管理以及日志记录。AOP将这些分散在各个业务逻辑中的代码通过横向切割的方式抽取到一个独立的模块中。AOP实现的关键就在于AOP框架自动创建的AOP代理,AOP代理则可分为静态代理和动态代理两大类,其中静态代理是指使用AOP快你赶紧提供的命令进行编译,从而在编译阶段就可生成AOP代理类,因此也称为编译时增强;而动态代理则在运行时借助于JDK动态代理、CGLIB等在内存中“临时“生成AOP动态代理类,因此也被称为运行时增强。

spring AOP是通过动态代理来实现业务逻辑的插入,是开发者在开发时不用关注其他与业务无关的点,通过代理的方式做到了插拔式操作。

IOC其实是遵循了软件设计理念的依赖倒转原则,面向对象的设计就是为了实现软件的更好的复用性和扩展性,我们就必须降低我们每个pojo的依赖关系,也就是解耦,耦合度低了,我们才能更好的重用和扩展。

AOP,面向切面编程,目标就是分离关注点。就是要做的事,就是关注点。灵活组合,达到一种可配置的可插拔的程序结构。

AOP最大的用户就在于提供了事务管理的能力。事务管理就是一个关注点,你的正事就是去访问数据库,而你不想管事务,所以spring在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,自动帮你提交/回滚事务。

AOP要做的就是在用户不知道的情况下,将我们的调用点包裹起来,把原来的功能进行分离。

IOC,依赖倒置、控制反转的意思。将对象的创建和获取提取到外部,由外部容器提供需要的组件。

IOC要做的就是在调用点上从原来的主动生成一个调用点,变成被动的接受一个调用点。

时间: 2024-11-03 21:19:00

spring、AOP、IOC的相关文章

AOP、静态代理、JDK动态代理、CGLIB动态代理、Spring实现AOP、IOC+AOP

一.为什么需要代理模式 假设需实现一个计算的类Math.完成加.减.乘.除功能,如下所示: 1 package com.zhangguo.Spring041.aop01; 2 3 public class Math { 4 //加 5 public int add(int n1,int n2){ 6 int result=n1+n2; 7 System.out.println(n1+"+"+n2+"="+result); 8 return result; 9 } 1

Spring总结——AOP、JDBC和事务的总结

1.上一次总结了 Spring 的核心三大组件(Core,Beans,Context),今天总结的 AOP.JDBC和事务都可以看成是核心三大组件的应用. 其中 Spring 的事务管理又以 AOP 为基础的声明式事务管理,对 JDBC 数据操作进行了补充. 2.在学习 AOP 的时候,需要搞明白的几个问题. (1)AOP 是以动态代理为基础的,所以在学习 AOP 之前,首先对动态代理有深刻的理解. (2)AOP 和切面是什么关系. (3)AOP 中概念比较多,明白每个名词的含义:切面.增强.代

Spring之Aop与Ioc

用Spring用了这么久,也该找个时间总结总结,这里我并没有把Aop和Ioc分开讲. 首先概述一下Spring,Spring是一款设计非常好的解耦框架,无侵入性,可以整合其它很多框架,比如常用的Struts,Hibernate,Mybatis或者Ibatis等,由此可以解决企业开发的复杂性,其核心的两个东西,就是AOP和IOC. Spring包含了7个模块,每个模块可以独立存在 每个模块的作用如下(这里参考的其它博客.原文地址:http://www.ibm.com/developerworks/

Spring中AOP和IOC深入理解

spring框架 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单性.可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益. ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. Spr

spring 学习 AOP和IOC

自11开始接触三大框架,至今已俞5载, 当时风光无限的ssh,现在还在被广泛使用,并有扩大之势的只有spring了 spring主要特性,是广为使用的AOP(面向切面)和IOC(控制反转) 1.其中,IOC(控制反转)也叫依赖注入,使用最是广泛 基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起. 就是通过在代码中大量使用接口,并为所有参数编写get,

理解Spring的AOP和Ioc/DI就这么简单

一.什么叫Ioc.DIIoc:Inversion of Control -- 控制反转 DI:Dependency Injection -- 依赖注入 其实这两个概念本质上是没有区别的,那我们先来看看什么叫做Ioc? 假设这么一个场景: 在A类中调用B类的方法,那么我们就称 A依赖B,B为被依赖(对象),相信这点大家能够理解. 传统做法: (1)直接在A(方法)中new出B类对象,然后调用B类方法 -- 硬编码耦合: (2)通过简单工厂获取B类对象,然后调用B类的方法 -- 摆脱了与B的耦合,却

1.2异常处理和服务配置、aop、日志、自定义事件处理

一.异常处理 2.1.数据验证 现在假设说要进行表单信息提交,肯定需要有一个表单,而后这个表单要将数据提交到 VO 类中,所以现在的基本实现如下: 1. 建立一个 Member.java 的 VO 类: package cn.study.microboot.vo; import java.io.Serializable; import java.util.Date; @SuppressWarnings("serial") public class Member implements S

面向对象先生和他的兄弟姐妹们——小议【OOP、COP、AOP、SOP】

接着上一篇<从门卫的思维方式来看--面向对象>.上次我们聊到了面向对象的来龙去脉,但是聊得比较粗.这次再补充一点,慢慢来完善这个体系结构. 怎么来的? 故事是从结构化的出现开始的-- long long ago--,软件开发的世界还是一篇混沌,代码中充斥着goto 语句,无论开发什么样子的软件都面临着复杂难懂的问题,过于灵活的goto语句让程序的流程随意跳转,无法掌控--,一时间可谓是乱象丛生啊.这个时候软件领域出现了一位神秘的人物!他就是"结构侠"(结构化编程思想),他的

Java中IoC、AOP、Bean、PO、VO、DTO、EJB、POJO等常见概念简述

JavaBeans 是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中. 特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性. 名称中的“Bean”是用于Java的可重用软件组件的惯用叫法. IoC(Inversion of Control) 是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度. 其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency