Coin163

首页 > spring IoC和AOP的原理

spring IoC和AOP的原理

相关标签: spring aop ioc

2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

相关推荐:Java Spring的IoC和AOP的知识点速记

Java Spring的IoC和AOP的知识点速记 Spring简介 Spring解决的最核心的问题就是把对象之间的依赖关系转为用配置文件来管理,这个是通过Spring的依赖注入机制实现的。 Spring Bean装配 1. IOC的概念以及在Spring容器中如何进行IOC的操作。 IOC:Inversion of Co

下面为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(A spect 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的2大原理,自如怎么配置,那就要花点时间去学,原理思想掌握了哪些配置方法随便学下就明白了。

原文

下面为spring的主要原理: IoC(Inversion of Control):IoC就是应用本身不依赖对象的创建和维护而是交给外部容器(这里为spring),这要就把应用和对象之间解耦,控制权交给了外部容器。即Don't cal

------分隔线----------------------------