更新时间:2022-04-15 08:48:00 来源:极悦 浏览1037次
Spring的ioc和aop的原理是什么?极悦小编来为大家解答。
IoC是指应用程序本身不依赖对象的创建和维护,而是交给外部容器(这里是spring)。这将应用程序和对象解耦,并将控制权交给外部容器。那就是不要打电话给我,我会打电话给你!因此,IoC也称为DI(依赖注入)对象的创建和维护依赖于外部容器。
类用户服务{
私有 UserDao userDao = new UserDaoImpl(); <wbr>//让业务层和数据访问层耦合在一起,不使用未来的模块替换。</wbr>
私人用户道 userDao_IoC = null;
公共无效 SetUserDao(UserDao userDao){
this.userDao_IoC = userDao
}
公共无效保存(用户用户){
userDao.save(用户);
}
}
面向方面的编程。就是抽象出一些贯穿各个模块的相同功能,然后封装到一个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教程,里面的课程内容细致全面,很适合没有基础的小伙伴学习哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习