同源策略,跨域,AOP相关,动态代理

1.同源策略

如果浏览器的地址与Ajax的请求地址 协议名称://域名地址:端口号 如果都相同则满足同源策略.
浏览器可以正常的解析返回值.如果三者之间有一个不同,则违反了同源策略.浏览器不会解析返回值.

2.什么是跨域

由于业务需要,通常A服务器中的数据可能来源于B服务器. 当浏览器通过网址解析页面时,
如果页面内部发起ajax请求.如果浏览器的访问地址与Ajax访问地址不满足同源策略时,则称之为跨域请求.
跨域要素:

  1. 浏览器
  2. 解析ajax
  3. 违反了同源策略

浏览器限制: 即浏览器对跨域行为进行检测和阻止
触发跨域的三要素之一: 即 协议,域名和端口三个条件满足其一
发起的是xhr请求: 即发起的是XMLHttpRequest类型的请求。

3.动态代理分类

  1. JDK代理:
    要求: 要求目标对象必须实现接口
    代理要求: 代理对象也必须实现目标对象的接口
    目标对象/代理关系: 目标对象与代理对象兄弟关系.

  2. CGlib代理
    要求: 不管目标对象是否有接口,都可以为其创建代理对象
    代理要求: 要求代理对象必须继承目标对象
    目标对象/代理关系: 目标对象与代理对象是父子关系

4.动态代理优势:

将公共的部分写到动态代理中,之后其他的业务类调用即可

5.AOP名词解释:

  1. 连接点: 用户可以被扩展的方法
  2. 切入点: 用户实际扩展的方法
  3. 通知: 扩展方法的具体实现
  4. 切面: 将通知应用到切入点的过程

6.AOP底层

Srping框架的AOP技术底层也是采用的代理技术,代理的方式提供了两种

  1. 基于JDK的动态代理
    必须是面向接口的,只有实现了具体接口的类才能生成代理对象
  2. 基于CGLIB动态代理
    对于没有实现了接口的类,也可以产生代理,产生这个类的子类的方式

Spring的传统AOP中根据类是否实现接口,来采用不同的代理方式

  1. 如果实现类接口,使用JDK动态代理完成AOP
  2. 如果没有实现接口,采用CGLIB动态代理完成AOP

7.通知类型(必会)

before: 在目标方法执行之前执行
afterReturning: 在目标方法执行之后返回时执行
afterThrowing: 在目标方法执行之后,抛出异常时执行
after: 无论程序是否执行成功,都要最后执行的通知
around: 在目标方法执行前后 都要执行的通知(完美体现了动态代理模式)
功能最为强大 只有环绕通知可以控制目标方法的执行
环绕通知是处理业务的首选. 可以修改程序的执行轨迹,
另外的四大通知一般用来做程序的监控.(监控系统) 只做记录

8. 切入点表达式:

当程序满足切入点表达式,才能进入切面,执行通知方法.

  1. bean(“bean的ID”) 根据beanId进行拦截 只能匹配一个
  2. within(“包名.类名”) 可以使用通配符*? 能匹配多个.
    粒度: 上述的切入点表达式 粒度是类级别的. 粗粒度.
  3. execution(返回值类型 包名.类名.方法名(参数列表…))
    粒度: 控制的是方法参数级别. 所以粒度较细. 最常用的.
  4. @annotation(包名.注解名) 只拦截注解.
    粒度: 注解是一种标记 根据规则标识某个方法/属性/类 细粒度

9.关于通知方法的执行顺序

  1. 执行around开始
  2. 执行before
  3. 执行目标方法
  4. 执行afterReturning
  5. 执行afterThrowing
  6. 执行after
  7. 执行around通知结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值