2026-01-14 07:04:01
Spring框架的核心思想主要包括依赖注入(DI)和面向切面编程(AOP),两者共同实现了松耦合、模块化的应用架构。以下是对这两大核心思想的详细解析:
一、依赖注入(Dependency Injection, DI)核心目标:通过解耦对象与其依赖关系,提升代码的可维护性和可测试性。
1. 依赖注入的本质灵活性:依赖关系可在配置中修改,无需改动代码。
可测试性:可轻松替换依赖为Mock对象进行单元测试。
核心目标:将横切关注点(如日志、事务)与业务逻辑分离,提升代码模块化。
1. AOP的核心概念关键注解:
@Before:目标方法执行前运行。
@After:目标方法执行后运行(无论是否异常)。
@AfterReturning:目标方法成功返回后运行。
@AfterThrowing:目标方法抛出异常时运行。
@Around:包裹目标方法,可控制是否执行(通过jp.proceed())。
@Pointcut:定义可复用的切入点表达式(如execution(* controller.Default.*(..)))。
代码示例:
@Aspectpublic class Logger { @Before("execution(* controller.Default.*(..))") public void before() { System.out.println("Method about to execute"); } @Around("pointcut()") // 使用@Pointcut复激银友用切入点 public void around(ProceedingJoinPoint jp) throws Throwable { System.out.println("Before method"); jp.proceed(); // 必须调用以执行原方法 System.out.println("After method"); }}DI负责对象间的依赖管理,AOP负责对象内部方法的增强。
例如,通过DI注入的Service对象,其方搏判法可被AOP自动拦截(如添加事务)。
DI降低组件耦合,AOP分离横切逻辑,共同提升代码的可维护性。
理解这两大思想后,可深入学习Spring的注解驱动开发(如@Autowired、@Component)和AOP的高级用法(如自定义注解触发切面),以更高效地构建应用。