wordpress 导入网站模板WordPress主题设置保存
一、Spring框架概述
Spring是Java企业级应用开发的核心框架,通过控制反转(IoC)和 面向切面编程(AOP)实现模块解耦,简化开发流程。其核心优势包括依赖注入、声明式事务管理、集成主流ORM框架(如Hibernate、MyBatis)等。
Spring生态全景图:
-  
核心模块:IoC容器、AOP、事务管理
 -  
扩展模块:Spring MVC(Web开发)、Spring Boot(快速开发)、Spring Cloud(微服务)
 -  
数据层支持:Spring Data(统一数据访问)、Spring Security(安全认证)
 
二、Spring核心机制
1. 控制反转(IoC)与依赖注入(DI)
-  
IoC:将对象创建与管理的控制权交给Spring容器,而非硬编码。
 -  
DI实现方式:
注入方式 特点 示例代码 构造器注入 强制依赖初始化 new UserService(userRepository)Setter注入 灵活设置可选依赖 userService.setRepo(repo)注解注入 简化配置(如@Autowired) @Autowired private UserRepo repo 
IoC容器工作流程:
-  
加载配置文件(XML/注解)
 -  
解析Bean定义并注册到容器
 -  
实例化Bean并注入依赖
 -  
管理Bean生命周期(初始化/销毁)
 
2. 面向切面编程(AOP)
AOP核心概念:
-  
切面(Aspect):封装横切关注点(如日志、事务)
 -  
通知(Advice):定义何时执行增强(@Before,@Around)
 -  
切点(Pointcut):指定哪些方法需要增强
 
AOP实现方式对比:
| 方式 | 原理 | 适用场景 | 
|---|---|---|
| JDK动态代理 | 基于接口代理 | 目标类实现接口 | 
| CGLIB动态代理 | 生成子类代理 | 目标类无接口 | 
示例:事务管理通过@Transactional注解实现方法级事务控制。
三、Bean管理与作用域
1. Bean生命周期
-  
实例化:通过反射创建对象
 -  
属性注入:填充依赖(DI)
 -  
初始化:调用init-method或@PostConstruct
 -  
使用:通过容器获取Bean
 -  
销毁:调用destory-method
 
2. Bean作用域
| 作用域 | 描述 | 适用场景 | 
|---|---|---|
| Singleton | 单例(默认) | 无状态服务(如工具类) | 
| Prototype | 每次请求创建新实例 | 有状态对象(如购物车) | 
| Request | 每个HTTP请求一个实例 | Web应用请求处理 | 
| Session | 每个用户会话一个实例 | 用户登录信息管理 | 
四、Spring注解深度解析
1. 组件扫描与核心注解
Spring通过@Component及其衍生注解实现Bean的自动注册,无需XML配置即可完成对象管理:
-  
@Component:通用组件标记,适用于任意层级类
 -  
分层专用注解:
-  
@Controller:Web层组件(如处理HTTP请求) -  
@Service:业务逻辑层组件 -  
@Repository:数据访问层组件(自动处理数据访问异常) 
 -  
 
示例配置:
<context:component-scan base-package="com.example"/> <!-- 开启组件扫描 --> 
2. 依赖注入注解
通过注解实现灵活依赖管理,无需set方法:
-  
@Autowired:按类型自动装配,配合@Qualifier("beanName")可按名称注入 -  
@Resource:Java原生注解,直接按名称注入(等价于@Autowired + @Qualifier) -  
@Value:注入配置文件属性(如@Value("${jdbc.url}")) 
代码示例:
@Service
public class UserService {@Autowired@Qualifier("userDao")private UserDao dao; // 按类型+名称精确注入@Resource(name = "cacheManager")private CacheManager cache; // 直接按名称注入
} 
3. 作用域与生命周期控制
-  
@Scope:定义Bean作用范围(如@Scope("prototype")多例模式) -  
生命周期回调:
-  
@PostConstruct:初始化后执行(替代init-method) -  
@PreDestroy:销毁前执行 
 -  
 
五、Spring事务管理
1. 事务传播行为
| 传播类型 | 描述 | 
|---|---|
| REQUIRED | 当前有事务则加入,否则新建(默认) | 
| REQUIRES_NEW | 新建事务,挂起当前事务 | 
| NESTED | 嵌套事务(子事务回滚不影响父事务) | 
2. 声明式事务配置
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class
)
public void transferMoney() { ... } 
六、Spring MVC与Spring Boot
1. Spring MVC工作流程
-  
用户请求 → DispatcherServlet接收
 -  
HandlerMapping确定目标Controller
 -  
Controller执行业务逻辑 → 返回ModelAndView
 -  
ViewResolver解析视图 → 渲染响应
 
2. Spring Boot核心优势
-  
自动配置:根据依赖自动配置组件(如spring-boot-starter-web集成Tomcat)
 -  
简化部署:内嵌服务器,打包为可执行JAR
 -  
监控支持:Actuator提供健康检查、性能指标
 
七、高频面试题精选
-  
IoC与DI的区别:IoC是设计思想,DI是实现方式。
 -  
Bean线程安全吗:不安全的,单例Bean需避免成员变量,推荐使用ThreadLocal。
 -  
Spring事务失效场景:非public方法、自调用、异常未抛出等。
 
翻过这座山,他们就会听到你的故事!欢迎在评论区交流~
