今天老师讲了一些新的知识,主要是以下内容:
1.自动装配
定义:
无需在spring配置文件中描述javabean之间要建立的依赖关系(如配置<property>、<constructor-arg>),IoC容器会自动建立(装配或组装)javabean之间的依赖关系。
设置方式:
配置<bean id="" class="" autowire=""/>
* autowire的取值:
1) byName
IoC容器会根据set方法中对应的property名字找到对应的javabean(id要和
property名字一致),并且创建其实例后调用set方法注入进配置属性autowire的Bean实例中
2) byType
IoC容器会根据set方法中参数的类型找到对应的javabean,并且创建其实例后
调用set方法注入进配置属性autowire的Bean实例中。
3) constructor
IoC容器会根据有参构造器中参数类型找到对应的javabean,并且创建其实例后
调用有参构造器注入进配置属性autowire的Bean实例中。但是对非javabean类型的参数
必须配置<constructor-arg>后进行注入。
4) autodetect
先通过constructor,若不行再通过byType。
优点: 可以减少配置文件的内容
缺点: 可读性下降
2.AOP的相关知识:AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IoC基础,是对OOP的有益补充。
AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns
相关概念:
— 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。
— 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。
— 通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。
— 切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点,例如,使用正则表达式。
— 引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现IsModified接口,来简化缓存。
— 目标对象(Target Object):包含连接点的对象,也被称作被通知或被代理对象。
— AOP代理(AOP Proxy):AOP框架创建的对象,包含通知。在Spring中,AOP代理可以是JDK动态代理或CGLIB代理。
— 编织(Weaving):组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。