Spring----IOC/AOP(原创笔记)

*其实这些知识点网上很容易找到,这里只是体系化总结,让你对知识有整体结构化认知*
IOC概念 : Inversion of Control

“控制反转”,也叫依赖注入(Dependency Injection,DI),其含义相同,从不同角度描述。
控制权由程序代码移到Spring容器中,控制权发生反转,这就是IOC思想。

装载

常用注解:
@Component 泛化的概念,表示 一个组件bean,可作用在任何层次;
@Repository 数据访问层(DAO层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同;
@Service 业务层(Service 层)标识, 其功能与 @Component 相同;
@Controller 控制层, 其功能与 @Component 相同;
@Autowired 可标识构造函数、属性的set方法、属性变量,配合注解器完成bean装载,默认按类型装配;
@Resource 有type、name属性,默认按name装配;
@Qualifier 与autowired配合,bean的实例名由其参数指定;

AOP概念: Aspect Oriented Programming
  • 一种编程模式,如OOP面向对象编程。能有效减少重复代码,达到松耦合目的;

  • 目前最流行的 AOP 框架有两个,分别为 Spring AOP 和 AspectJ;

  • 一些术语
    Joinpoint(连接点) 指那些被拦截到的点,在 Spring 中,可以被动态代理拦截目标类的方法。
    Pointcut(切入点) 指要对哪些 Joinpoint 进行拦截,即被拦截的连接点。
    Advice(通知) 指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容。
    Target(目标) 指代理的目标对象。
    Weaving(植入) 指把增强代码应用到目标上,生成代理对象的过程。
    Proxy(代理) 指生成的代理对象。
    Aspect(切面) 切入点和通知的结合。

  • Spring JDK动态代理
    通过java.lang.reflect.Proxy 类实现(方法前方法后拦截)

  • Spring CGLlB动态代理
    CGLIB(Code Generation Library)是一个高性能开源的代码生成包,它被许多 AOP 框架所使用,其底层是通过使用一个小而快的字节码处理框架 ASM(Java 字节码操控框架)转换字节码并生成新的类;

  • Spring使用AspectJ开发AOP
    @Aspect 用于定义一个切面。
    @Before 用于定义前置通知,相当于 BeforeAdvice。
    @AfterReturning 用于定义后置通知,相当于 AfterReturningAdvice。
    @Around 用于定义环绕通知,相当于MethodInterceptor。
    @AfterThrowing 用于定义抛出通知,相当于ThrowAdvice。
    @After 用于定义最终final通知,不管是否异常,该通知都会执行。
    @DeclareParents 用于定义引介通知,相当于IntroductionInterceptor(不要求掌握)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值