Spring笔记(面试题)md
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
1.什么是Spring框架 2.Spring的特点 3.什么是IOC 4.基于xml的IOC 5.项目案例 6.基于注解的IOC 7.添加包扫描的方式 8.为应用指定多个 Spring 配置文件 9.spring配置文件的整合 10.面向切面编程AOP 11.手写AOP框架 12.Spring支持的AOP的实现 13.AOP常用的术语 14.什么是AspectJ框架 15.AspectJ常见通知类型 16.AspectJ 的切入点表达式(掌握) 17.AspectJ的前置通知@Before .... .... .... ### Spring框架概述与特点 #### 1. 什么是Spring框架? Spring框架是一个开源的企业级Java应用框架,也是目前最流行的Java EE开发框架之一。它主要提供了两大核心特性:依赖注入(Dependency Injection, DI)和面向切面编程(Aspect Oriented Programming, AOP),并围绕这些特性构建了一系列的功能模块。Spring框架的出现极大地简化了Java企业级应用的开发过程,并通过其强大的生态系统,包括Spring MVC、Spring Boot、Spring Cloud等,支持从简单的Web应用到复杂的微服务架构的开发。 #### 2. Spring的特点 - **轻量级**:Spring框架的核心库非常轻量,通常情况下核心库大小不超过3MB。这种轻量级的设计使得Spring能够被广泛地应用于各种规模的应用程序中。 - **面向接口编程**:Spring鼓励开发者使用接口而非具体实现类来编写代码,这样可以提高代码的灵活性和可扩展性。例如,在使用Spring时,开发者可以通过定义接口并为其提供不同的实现,从而在运行时根据需要轻松地切换实现。 - **AOP(面向切面编程)**:这是一种编程范式,用于处理那些跨越多个对象的业务逻辑,如日志记录、事务管理等。通过AOP,可以将这些横切关注点从业务逻辑中分离出来,提高代码的可读性和可维护性。 - **框架整合**:Spring框架可以很容易地与其他框架集成,如Hibernate、MyBatis等,为开发者提供了一种便捷的方式来组合使用不同的技术栈。 ### IoC与依赖注入 #### 3. 什么是IoC? IoC(Inversion of Control,控制反转)是一种设计模式,也是一种设计思想。它指的是将对象创建和依赖关系的控制权交给一个外部容器,而不是由对象本身来控制。这样做的好处是可以降低各个组件之间的耦合度,提高系统的可测试性和可维护性。 #### 4. 基于XML的IoC - **创建对象**:在Spring中,通过XML配置文件来声明和管理Bean(即对象)。例如: ```xml <bean id="student" class="com.example.Student"/> ``` - **给创建的对象赋值**:Spring提供了两种主要的依赖注入方式:setter注入和构造器注入。 - **Setter注入**:通过设置setter方法来注入依赖。这种方式要求对象必须有无参构造函数,并且有对应的setter方法。例如: ```xml <bean id="student" class="com.example.Student"> <property name="name" value="李四"/> <property name="age" value="22"/> <property name="school" ref="school"/> </bean> <bean id="school" class="com.example.School"> <property name="name" value="清华大学"/> <property name="address" value="海淀区"/> </bean> ``` - **构造器注入**:通过构造函数参数来注入依赖。这种方式要求对象必须有一个构造函数接受依赖作为参数。例如: ```xml <bean id="student" class="com.example.Student"> <constructor-arg index="0" value="张三"/> <constructor-arg index="1" value="22"/> <constructor-arg index="2" ref="school"/> </bean> ``` ### 高级Spring配置 #### 5. 添加包扫描的方式 Spring允许通过`<context:component-scan>`标签来进行自动扫描,发现并注册特定包下的所有Bean。这种方式可以减少显式定义Bean的繁琐工作。例如: ```xml <context:component-scan base-package="com.example"/> ``` #### 6. 为应用指定多个Spring配置文件 在实际开发中,通常会将配置文件拆分成多个,以便更好地组织和管理。可以通过`<import>`标签来导入其他配置文件。例如: ```xml <import resource="db-config.xml"/> <import resource="service-config.xml"/> ``` #### 7. spring配置文件的整合 当多个Spring配置文件需要被合并时,可以使用`<import>`标签来导入其他配置文件。此外,还可以通过使用`@ImportResource`注解来整合配置文件。例如: ```java @Configuration @ImportResource(locations={"classpath:db-config.xml", "classpath:service-config.xml"}) public class AppConfig {} ``` ### 面向切面编程(AOP) #### 10. 面向切面编程AOP AOP是一种编程技术,用于将那些跨越多个对象的行为封装成可重用的组件(称为“切面”)。AOP允许开发者将关注点分离,比如事务管理和日志记录等。 #### 12. Spring支持的AOP的实现 Spring支持两种类型的AOP实现:基于代理的AOP和基于注解的AOP。 - **基于代理的AOP**:使用动态代理机制,通过代理类来实现AOP功能。 - **基于注解的AOP**:通过在类或方法上添加特定的注解来定义切面和通知。 #### 13. AOP常用的术语 - **切面(Aspect)**:横切关注点的模块化。比如事务管理、日志记录等。 - **连接点(Joinpoint)**:在程序执行过程中某个特定的点,如方法调用。 - **通知(Advice)**:在特定连接点上执行的动作。 - **切入点(Pointcut)**:匹配连接点的表达式。 - **引入(Introduction)**:声明额外的方法或字段到一个类型。 - **目标对象(Target Object)**:被一个或多个切面所通知的对象。 - **代理(Proxy)**:由AOP框架创建的对象,用来实现切面行为。 ### AspectJ框架 #### 14. 什么是AspectJ框架 AspectJ是一个强大的面向切面编程框架,可以与Spring框架一起使用来实现AOP。它提供了一种更加灵活的方式来定义切面和通知,支持静态编译时织入和运行时织入。 #### 15. AspectJ常见通知类型 - **@Before**:在方法执行之前执行。 - **@After**:在方法执行之后执行,无论方法是否正常完成。 - **@AfterReturning**:在方法正常返回之后执行。 - **@AfterThrowing**:在方法抛出异常后执行。 - **@Around**:环绕通知,可以控制方法的调用流程。 #### 16. AspectJ 的切入点表达式(掌握) AspectJ使用一种特殊的表达式语言来定义切入点,该表达式语言比Spring中的更为强大和灵活。例如: ```java @Pointcut("execution(* com.example.service.*.*(..))") public void serviceMethods() {} ``` #### 17. AspectJ的前置通知@Before 使用`@Before`注解定义一个前置通知,该通知会在连接点方法执行前被调用。例如: ```java @Before("serviceMethods()") public void beforeAdvice(JoinPoint joinPoint) { // 在这里编写前置通知的逻辑 } ``` 以上是对Spring框架的一些核心概念和技术点的详细介绍。希望这些内容能帮助您更好地理解和掌握Spring框架的相关知识。


















- 粉丝: 9151
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于SMIC 130nm RF工艺的高性能简易锁相环设计:20MHz输入800MHz输出,低功耗与快速锁定 · 锁相环
- 微电网分层与二次控制技术:基于事件触发的顶刊复现案例分析 微电网
- 电力电子领域MMC模块化多电平变换器在220kV400kV环境下的动稳态性能优化及调制策略 · MATLAB
- 基于COMSOL的冻土路基水热力多场耦合建模与优化方法 高效版
- 基于SpringBoot+Vue图书管理系统源码及详细文档说明(Java毕业设计)
- 基于Matlab的指纹识别库内对比系统:从归一化到结果识别的全流程解析
- 双闭环控制与最近电平逼近调制在MMC模块化多电平换流器仿真中的应用
- 卡尔曼滤波:线性统计优化算法在多领域的应用与实现 - 线性统计 宝典
- COMSOL模拟热风作用下多孔介质温湿度变化及其工程应用
- 三相车载充电机PWM整流与全桥LLC仿真模型:高效电力转换与电压调节技术 电力电子 必备版
- 电力电子技术中LLC谐振变换器变频与移相混合控制策略及仿真模型研究
- 基于Simulink仿真的800V输入三相四桥臂逆变器矢量控制设计与性能分析 · 矢量控制
- android移动开发本科期末大作业天气预报app源码高分必看
- 基于二自由度车辆动力学模型的自动驾驶横纵向控制算法研究与应用
- 基于图腾柱PFC的单相整流器Simulink仿真及220V转400V直流电稳定输出研究 v1.2
- java web 简单增删改查 jsp + mysql


