1.IOC和DI
  IOC侧重的是思想 ,DI实现
  IOC侧重构造对象:通过容器  DI对属性值进行注入  (普通属性和域属性的注入)

2.aop
 第一个案例
       1.增强:前置和后置
             MethodBeforeAdvice    AfterReturningAdvice   接口
           before()              afterRetruing()
       2.增强也需要再xml中进行配置

       3.AOP操作在配置文件中
     <!--dao层的配置-->
    <bean >     int

 

4.方法签名
     切入点表达式要匹配的对象就是目标方法的方法名。所以,execution表达式中明显就是方法的签名。
     注意:表达式中加[]的部分表示可省略部分,各部分间用空格分开。在其中可以使用以下符号:
      符号              意义
       *                 0至多个任意字符
       ..                用在方法参数中,表示任意多个参数
                         用在包名后,表示当前包及其子包路径
        +                用在类名后,表示当前类及其子类
                         用在接口后,表示当前接口及其实现类
      案例:
        execution(public * *(..))  指定切入点为:任意公共方法
        execution(* set*(..))   指定切入点为:任何一个以"set"开始的方法

 


5.  注入方式
     1.设值注入

     2.构造注入
       条件1:带参构造  无参构造
       条件2:
       <bean >

ClassLoader loader,  类加载器(孙卫琴) 如何获取到类加载器?
Class<?>[] interfaces,
InvocationHandler h  调度处理器

CGLIB动态代理: 编译的时候
      特点:再一个类型没有接口的情况下进行代理
             实质:内存中构建了出了目标类型的子类
             对于不使用接口的业务类,无法使用JDK动态代理,cglib采用非常底层的字节码技术,
         可以为一个类创建子类
CGLIB动态代理  无接口代理 编译已经增强
final SomeServiceImpl service=new  SomeServiceImpl();
Enhancer enhancer=new Enhancer();
enhancer.setSuperClass(service.getClass());
enhancer.setCallBack(new MethodInterceptor(){

   public Object intercept(Object o,Method method,Object[] objects,MethodProxy methodProxy){
    sout("before=========");
    Object resullt=methodProxy.invoke(service,objects);
        return result;
   }
});

SomeServiceImpl proxy=(SomeServiceImpl)enhancer.create();
proxy.doSome();

相关文章:

  • 2022-12-23
  • 2021-07-04
  • 2021-06-30
  • 2021-06-15
  • 2021-09-19
  • 2021-07-22
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-18
  • 2021-09-23
  • 2022-12-23
  • 2022-01-20
  • 2021-05-20
  • 2021-09-29
  • 2021-07-18
相关资源
相似解决方案