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后置方法在连接点方法完成之后执行,无论连接点方法执行成功还是出现异常,都将执行后置方法