下面为spring的主要原理:
IoC(Inversion of Control):IoC就是应用本身不依赖对象的创建和维护而是交给外部容器(这里为spring),这要就把应用和对象之间解耦,控制权交给了外部容器。即Don't call me ,I'll call you!所以IoC也称DI(依赖注入)对象的创建和维护依赖于外部容器.
class UserService{
private UserDao userDao = new UserDaoImpl(); //让业务层与数据访问层耦合在一起,不利用以后模块的替换.
private UserDao userDao_IoC = null;
public void SetUserDao(UserDao userDao){
this.userDao_IoC = userDao
}
public void save(User user){
userDao.save(user);
}
}
AOP(Aspect Oriented Programming):面向切面编程。就是把一些贯穿在各个模块之间相同的功能抽象出来,然后封装成一个面。
AOP一般都是通过代理来实现,利用代理就有目标对象是什么,拦截哪些点(方法),拦截后要做什么。
JoinPoint(连接点):被拦截到的点. Advice(通知):拦截JoinPoint之前与之后要做的事。
PointCut(切入点):对joinPoint进行拦截的定义。Target(目标对象):代理的目标对象。
对于异常处理,日志功能,权限的检查,事务等都是贯穿到各个模块之中,因此进行AOP.
代理技术有面向接口和生成子类.
public Object getProxy(final Object targetObj) {
Obejct obj = Proxy.newProxyInstance(
targetObj.getClass().getClassLoader(), //被代理类的类加载器
targetObj.getClass().getInterfaces(), //被代理类接口的字节码
new InvocationHandler() { //类似于一个回调函数 代理功能就在里面实现
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{
try{
beforeAdvice(); //前置通知
method.invoke(targetObj, args); //拦截的点
afterAdvice(); //后置通知
}catch (Exception e) {
exceptionAdvice(); //异常通知
}finally{
finalAdvice(); //必须执行通知
}
return obj;
}
});
}
还一个用子类实现的同理 要采用CGlib库来实现 JDK6之前未提供,估计JDK以后会提供。
相关推荐
Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这两个概念是Spring框架的核心特性,极大地简化了企业...
通过这种方式,我们可以在不修改目标类代码的情况下,添加额外的功能,实现了与Spring AOP类似的效果。 总结来说,模拟Spring的IoC和AOP主要是通过注解来管理和控制对象的生命周期及行为。虽然这种模拟简化了Spring...
Spring框架是Java开发中不可或缺的一部分,它通过提供两种核心特性——控制反转(IoC)和面向切面编程(AOP)来简化应用的构建。理解并掌握这两种技术对于任何Java开发者来说都至关重要。 **控制反转(IoC)**,也...
Spring框架是Java开发中不可或缺的一部分,它通过引入依赖注入(IOC)和面向切面编程(AOP)的概念,极大地简化了应用程序的构建和管理。在本文中,我们将深入探讨Spring的IOC容器和AOP的核心概念,以及如何进行相关...
浅谈 Spring 原理 透析,IOC 和 AOP Spring 框架是一个从实际项目开发经验中抽取的,可高度重用的应用框架。它是一个轻量级容器,带有包装器,使许多不同的服务和框架更易于使用。轻量级容器接受任何 JavaBean,而...
基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)...
Spring框架是Java开发中不可或缺的一部分,它以...通过以上步骤,你将能够理解并掌握Spring的IoC和AOP原理,并具备自己实现的基础。这不仅有助于深入理解Spring,也有助于你在实际项目中更好地利用Spring框架进行开发。
例如,`SpringIOC`目录中的配置文件(如`applicationContext.xml`)用于定义bean的定义和它们之间的依赖关系。通过XML或注解方式声明bean,Spring可以自动管理bean的实例化、初始化和销毁,从而简化了代码并提高了可...
Spring框架是Java开发中不可或缺的一部分,它通过提供控制反转(IOC)和面向切面编程(AOP)等核心特性,极大地简化了企业级应用的构建。让我们深入探讨这两个概念及其在Spring中的实现机制。 首先,Spring的控制...
Spring IOC和AOP的原理及实例详解 在软件开发中,控制反转(IOC)和面向切面编程(AOP)是两种非常重要的设计模式。Spring框架正是基于这两种模式的思想设计的。下面我们将详细介绍Spring IOC和AOP的原理及实例详解...
Spring框架是Java开发中的核心组件,它通过控制反转(IOC)和面向切面编程(AOP)等特性,极大地简化了企业级应用的构建。在本教程中,我们将深入探讨这两个概念以及如何在MyEclipse环境中使用它们。下面将详细阐述...
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(IOC)和面向切面编程(AOP)功能而闻名。本项目"spring ioc和aop讲解项目demo"旨在通过实际操作来帮助开发者深入理解这两个核心概念。 首先,让...
spring Ioc与Aop依赖的jar包,基本用到的都有,包括aopalliance-1.0、aspectjweaver-1.6.9、commons-logging-1.2、log4j-1.2.17、spring-aop-3.2.13.RELEASE、spring-beans-3.2.13.RELEASE、spring-context-3.2.13....
本资源包含Spring IOC和AOP的实现代码,使得开发者可以深入理解其内部原理,便于调试和学习。 **Spring IOC(Inversion of Control)** IOC,即控制反转,是一种设计模式,它将对象的创建和管理交给专门的容器来...
**Spring IOC原理与设计模式** 控制反转(IOC)是一种设计思想,它改变了传统应用程序中对象之间的依赖关系管理方式。在没有IOC的情况下,对象通常自行创建其依赖的对象实例,而在Spring中,这个过程由Spring的IOC...
初学者认识和书写Spring IoC 和AOP
本压缩包"helloAop.zip"包含了Spring框架的两个关键特性:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)的示例。下面将详细介绍这两个概念及其在实际开发中的应用。 *...
Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。本篇将深入探讨Spring的这两...
综上所述,Spring的IOC和AOP提供了强大的工具,帮助开发者实现松耦合、模块化和关注点分离,从而提升代码的可维护性和复用性。通过学习和熟练掌握这两个核心概念,能够更好地利用Spring框架进行高效开发。
Spring 中 IoC 优点与缺点解析 IoC(Inversion of Control)是 Spring 框架中的一种设计模式,它的主要思想是将对象的创建和管理交给容器,从而解耦合对象之间的依赖关系。今天,我们将详细解析 IoC 的优点和缺点。 ...