Spring框架深度解析:从创建复杂对象到AOP实战

需积分: 1 0 下载量 101 浏览量 更新于2024-08-03 收藏 387KB DOC 举报
Spring框架,诞生于2003年,作为一款轻量级的JAVAEE框架技术,其第二日学习内容着重探讨了以下几个关键知识点: 1. **复杂对象的创建**:Spring框架提供了FactoryBean,用于自定义对象的创建过程。例如,FactoryBean可以创建复杂的数据库连接(如`Connection`),通过此类方式,开发者可以简化对象的生命周期管理。 2. **配置文件的参数化**:为了减少核心配置文件的冗余,Spring支持将常用配置信息存储在独立的properties文件中,并通过`<property>`标签引入这些外部配置。这样提高了可维护性和灵活性。 3. **静态代理与AOP**:静态代理允许在不修改原始类的情况下,通过创建代理类为业务逻辑添加额外功能。静态代理的主要缺点是代理类数量随原始类增多而增加,且可能造成功能冗余。相比之下,Spring的AOP(面向切面编程)利用动态代理,更为灵活地实现功能的插入和移除,比如通过前置通知、后置通知、环绕通知和异常通知控制功能的执行时机。 - AOP与OOP的区别在于,AOP解决的是横切关注点,如日志记录、事务管理等,而OOP主要关注对象间的交互。 - Spring的AOP是基于动态代理实现的,动态代理会在运行时生成代理类,增强原始类的功能。这包括编写原始类,定义各种通知类型(如执行前、执行后、环绕以及处理异常),以及定义切入点,即确定何时、何地应用这些通知。 4. **Spring动态代理示例**: - 创建一个原始类,如业务服务类。 - 编写通知,例如一个`MethodBeforeAdvice`通知,会在方法执行前添加额外功能。 - `AfterReturningAdvice`会在方法执行后执行,`MethodInterceptor`则在前后都执行额外功能。 - `ThrowsAdvice`用于处理方法抛出的异常。 5. **切入点表达式**:Spring的`execution(**..*.*(..))`是一个常用的切入点表达式,用于匹配所有包下的所有类的所有方法,这是定义通知应用范围的基础。 通过以上Spring框架的学习,学生能够深入理解如何在Spring中管理对象生命周期、配置文件的组织、以及如何利用AOP技术提高代码的灵活性和可维护性。掌握这些内容对于实际的Java EE开发项目至关重要。