zoukankan      html  css  js  c++  java
  • Spring笔记--0907

    包含ioc和aop两大核心概念

    aop----事务管理

    spring框架运用的设计模式(查一下)

    ---------------------------------------
    Ioc(控制反转)和Di-----dependency injection(依赖注入)

    Ioc 被调用对象不是由调用对象生成(new),而是用spring容器(通过反射机制)生成

    ---------------------------------------
    先理解简单工厂(对象在工厂里new)---理解spring(对象在spring里new)
    ----------------------------------------
    代理模式:
    抽象角色,代理角色(对真实对象的一个封装,也重写了抽象类的方法,但没有具体实现),真实角色(最重要引

    用的对象)

    public Proxy extends Subject{
     realSubject real;
     @Override
     void request(){
      before();
      real=new RealSubject();//对真实对象的一个封装
      real.request();
      after();
     }
    }

    public class Test1{
     public static void main(String args[]){
      ProxySubject proxy=new ProxySubject();
      proxy.request();
     }
    }
    -----------------------------------------------------
    当真实对象事先不存在时,使用动态代理
    public  class DynamicSubject implements InvocationHandler{
     private Object obj;
     public DynamicSubject(Object obj){
     }
     public Object invoke(Proxy。。。。){
     method.invoke(sub,args);
     }
    }

    public class Test2{
     public static void main(String args[]){
      Real real=new Real();//真实角色
      InvocationHandler handler=new DynamicSubject(real);//动态代理处理器
      Class realClass=real.getClass();
      
      Real real1=(Real)Proxy.newProxyInstance(realClass.getClassLoader

    (),realClass.getInterfaces,handler);//调用代理模式的处理器,出现一个实例,1类加载器 2真是角色的接

    口3...
      real1.request();
      
     }
    }
    --------------------------------------------------------------------
    横切关注点,方面,连接点(程序执行过程中的一个点,如方法调用,字段访问。。),增强,切入点

    --------------------------------------------------------------------
    public class TransactionInterceptor implements MethodIntercptor{
     public Object invoke(){
      String methodName=arg0.getMethod().getName();
      if(methodName.startWith("save")||methodName.startWith("update")  ||methodName.startWith("delete")){
      System.out.println("DFJGKL//////");
      }
      arg0.proceed();
     }
    }

  • 相关阅读:
    【原创】【1】rich editor系列教程。前期准备,兼容
    html5 video,audio控制播放多次,请求/监测全屏状态
    javascript中的位运算,
    温习classList api
    Fiddler常用功能总结
    小程序测试点总结
    Pycharm使用git版本控制
    python 运行当前目录下的所有文件
    MySQL查询count(*)、count(1)、count(field)的区别收集
    python 操作redis,存取为字节格式,避免转码加
  • 原文地址:https://www.cnblogs.com/ximencuixue/p/3307493.html
Copyright © 2011-2022 走看看