Spring的ioc和aop的原理 - 极悦
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Spring的ioc和aop的原理

Spring的ioc和aop的原理

更新时间:2022-04-15 08:48:00 来源:极悦 浏览1037次

Spring的ioc和aop的原理是什么?极悦小编来为大家解答。

IoC(Inversion of Control):

IoC是指应用程序本身不依赖对象的创建和维护,而是交给外部容器(这里是spring)。这将应用程序和对象解耦,并将控制权交给外部容器。那就是不要打电话给我,我会打电话给你!因此,IoC也称为DI(依赖注入)对象的创建和维护依赖于外部容器。

类用户服务{
私有 UserDao userDao = new UserDaoImpl(); <wbr>//让业务层和数据访问层耦合在一起,不使用未来的模块替换。</wbr>
私人用户道 userDao_IoC = null;
公共无效 SetUserDao(UserDao userDao){
this.userDao_IoC = userDao
}
公共无效保存(用户用户){
userDao.save(用户);
}
}

AOP(A s pect Oriented Programming):

面向方面的编程。就是抽象出一些贯穿各个模块的相同功能,然后封装到一个surface中。

AOP 一般是通过代理实现的。使用代理会决定目标是什么,拦截哪些点(方法),拦截后做什么。

JoinPoint(连接点):被截取的点。Advice(通知):JoinPoint拦截前后要做什么。

PointCut(切点):定义截取的joinPoint。目标:代理的目标对象。

对于异常处理、日志功能、权限检查、事务等,都是通过各个模块运行的,所以进行了AOP。

代理技术有面向接口和子类的生成。

公共对象 getProxy(最终对象 targetObj) {<wbr></wbr>
对象 obj =<wbr>Proxy.newProxyInstance(<wbr></wbr></wbr>
<wbr><wbr><wbr><span style="line-height:21px">targetObj</span>.getClass().getClassLoader(), <wbr><wbr><wbr>//代理类类加载器</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><span style="line-height:21px">targetObj</span>.getClass().getInterfaces(),<wbr><wbr>//代理类接口的字节码</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>new InvocationHandler() {<wbr><wbr>//类似回调函数代理函数在里面实现</wbr></wbr></wbr></wbr>< /wbr>
<wbr><wbr><wbr><wbr><wbr>@Override<wbr></wbr></wbr></wbr></wbr></wbr></wbr>
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{
<wbr><wbr>试试{<wbr></wbr></wbr></wbr>
beforeAdvice();<wbr><wbr>//预通知</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>method.invoke(targetObj, args); <wbr>//拦截点</wbr></wbr></wbr></wbr></wbr></wbr>
后通知();<wbr><wbr>//发布通知</wbr></wbr>
<wbr><wbr><wbr>}捕获(异常 e){<wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>exceptionAdvice();<wbr><wbr>//异常通知</wbr></wbr></wbr></wbr></wbr>< /wbr></wbr>
<wbr><wbr><wbr>}终于{<wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> finalAdvice();<wbr><wbr>//必须是已执行通知</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr> </wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<wbr></wbr></wbr></wbr></wbr> </wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>返回 obj;<wbr></wbr></wbr></wbr></ wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>}<wbr></wbr></wbr>
<wbr>});<wbr></wbr></wbr>
<wbr>}</wbr>

以上就是spring的两个原理,如何自由配置,那你得花点时间去学习一下,你就会明白在原理和思路上你掌握了哪些配置方法。如果大家对此比较感兴趣,想了解更多相关知识,不妨来关注一下极悦的Spring教程,里面的课程内容细致全面,很适合没有基础的小伙伴学习哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>