Skip to main content

Spring

David LiuAbout 1 min

Spring

IoC、AOP

IoC

对象创建(IoC)和依赖关系(DI)

默认是单例的,但是可以配置成 prototype

对象创建i

  • 配置文件,标签bean,id和class,用ClassPath
  • 配置类,用AnnotationConfigApplicationContext容器(需要register和refresh)

依赖注入的方式

  • 通过构造方法,需要提供带参的构造方法,推荐用name属性来注入

  • 通过setter,

  • 自动装配

    byType,

    byName 要保证字段名和bean名一致

AOP

面向切面编程

业务代码与关注点代码分离

代理模式

静态代理的本质:接口代理,代理类需要实现目标类相同的接口

动态代理

反射来调用方法:方法对象(对象, args)

实现接口的类型

JDK动态代理,反射

  • Method

没实现接口的类型

CGlib 动态代理,继承子类

Enhancer对象

  • enhancer.setSuperclass()设置父类
  • enhancer.setCallback()设置MethodInterception
  • enhancer.create()可以创建目标类的代理子类对象

类型:com.sun.proxy

切入点表达式

描述在哪个类的哪个方法上加入方法

  • expression(返回值类型, 路径.类名.方法名(参数列表))

代理类最后就是Enhancer类

前面类配置

通知方式

  • before 前置通知
  • after 后置通知
  • afterReturn
  • afterThrowing
  • around环绕通知,可以写异常处理

xml

annotation

日志处理

注解

  • 应用范围
  • 声明周期