spring

 

Spring

1、spring IOC

IOC(inversion of control):控制反转

  → spring code 最核心的部分

  → 需要先了解依赖注入(dependency inversion:把底层类作为参数传递给上层类,实现上层对下层的“控制”)

Spring IOC容器的核心接口

  → BeanFactory

1、    提供IOC的配置机制

2、    包含Bean的各种定义,便于实例化Bean

3、    建立Bean之间的依赖关系

4、    Bean生命周期的控制

  → ApplicationContext(BeanFactory的子接口之一,继承多个接口)

1、    BeanFactory :能够管理、装配Bean

2、    ResourcePatternResolver : 能够加载资源文件

3、    MessageSource:能够实现国际化等功能

4、    ApplicationEventPublisher:能够注册监听器,实现监听机制。

Spring IOC  getBean方法的代码逻辑

1、    转换beanName

2、    尝试从缓存中加载实例或者工厂中返回实例

3、    对Bean进行实例化

4、    检测parentBeanFactory

5、    初始化Bean的相关依赖

6、    创建Bean(检查bean符合要求会返回bean)

2、Spring AOP

关注点分离:不同的问题交给不同的部分去解决

1、面向切面编程AOP正是此种技术的体现

2、通用化功能代码的实现,对应的就是所谓的切面(Aspect)

3、业务功能代码和切面代码分开后,架构将变得高内聚低耦合

4、确保功能的完整性:切面最终需要被合并到业务中(Weave)

 

AOP的三种织入方式

1、编译时织入:需要特殊的Java编译器,如Aspectl

2、类加载时织入:需要特殊的java编译器,如Aspectl和AspectWerkz

3、运行时织入:Spring采用的方式,通过动态代理的方式,实现简单

 

AOP的主要名词概念

1、Aspect :通用功能的代码实现

2、Target :被织入Aspect的对象(HelloController)

3、JoinPoint :可以作为切入点的机会,所有方法都可以作为切入点

4、Pointcut :Aspect实际被应用在的join point,支持正则

5、Advice :类里的方法以及这个方法如何织入到目标方法的方式

6、Weaving :AOP的实现过程

 

Advice的种类

1、前置通知:@Before("webLog()")

2、后置通知:@AfterReturning(returning = "ret", pointcut = "webLog()")

3、异常通知:@AfterThrowing(throwing = "th" , pointcut = "webLog()")

4、最终通知:@After后置方法在连接点方法完成之后执行,无论连接点方法执行成功还是出现异常,都将执行后置方法

 

posted @ 2019-08-27 10:33  IT_longlong  阅读(147)  评论(0编辑  收藏  举报