什么是AOP?
AOP(面向切面编程)是Spring框架的重要特性,用于将日志、事务、权限等公共逻辑抽离,实现模块复用、降低耦合。项目中常用AOP记录操作日志和权限控制,通过自定义@Log注解结合环绕通知,捕获方法执行信息并存入数据库,便于追踪核心业务操作。其底层基于动态代理实现。
Spring Bean的作用域如何设置,常见的取值有哪些?
Spring Bean作用域可通过@Scope注解设置,常见有singleton(默认,单例)、prototype(每次创建新实例)、request(每请求一个实例)、session(每会话一个实例)。singleton在容器启动时初始化,可加@Lazy延迟;prototype则每次使用时创建。多数场景使用默认单例模式。
聊-聊Spring中bean的循环依赖问题?
Spring通过三级缓存解决循环依赖:一级缓存存放完整单例Bean,二级缓存存放早期半成品Bean,三级缓存存放对象工厂用于创建代理等对象。A依赖B、B依赖A时,先创建A并放入三级缓存,实例化B时通过三级缓存获取A的工厂生成早期引用并放入二级缓存,B完成初始化后注入A,再将B注入A,最终双方都成功创建并放入一级缓存,流程结束清除二级缓存临时对象。
第五章 spring框架
Spring的IOC(控制反转)将对象创建交给容器管理,避免手动new;DI(依赖注入)则让容器自动注入所需对象。通过@Controller、@Service等注解声明Bean,使用@Autowired或@Resource实现注入。默认单例Bean无并发控制,若无状态则线程安全,否则需自行保证。
优雅启动:如何避免流量打到没有启动完成的节点?
本文介绍RPC服务优雅启动的两大核心机制:**启动预热**与**延迟暴露**。通过启动预热,调用方按时间动态提升新节点权重,避免刚启动的“冷”服务因高负载导致请求超时;结合延迟暴露,在应用完全启动并完成资源预加载后才注册到注册中心,确保服务上线即稳定。二者协同实现流量平滑接入,保障系统可靠性。
架构设计:设计一个灵活的 RPC 框架
本讲深入讲解如何设计一个灵活的 RPC 框架,从传输、协议、引导到服务发现与治理,构建四层架构体系,并引入插件化设计提升可扩展性,实现高内聚、低耦合、易维护的微内核架构,助力系统应对持续变化的业务需求。(238字)
动态代理:面向接口编程,屏蔽 RPC 处理流程
本节讲解动态代理在RPC中的核心作用:通过面向接口编程,利用JDK动态代理技术生成代理类,拦截接口调用并透明嵌入远程通信逻辑,屏蔽底层网络细节,实现“本地调用即远程调用”的无缝体验,提升开发效率与系统解耦能力。
自定义注解
本文介绍如何在Spring项目中实现自定义注解,结合AOP与过滤器应用于日志、权限控制等场景。通过@Target、@Retention等元注解定义注解,配合Spring AOP或拦截器实现功能增强,提升代码可读性与复用性。
2.OAuth2.0实战案例
本案例详解OAuth2.0四种授权模式实战:通过创建资源与授权模块,配置Spring Security与OAuth2,依次实现授权码、简化、密码及客户端模式的令牌申请与资源访问,完成全流程安全认证集成。
Spring
Spring的IOC(控制反转)通过容器管理对象创建,无需手动new;DI(依赖注入)则由容器自动注入所需对象。默认bean为单例,非线程安全,可通过@Scope设置作用域(如singleton、prototype)。单例bean在容器启动时初始化,原型bean每次使用时创建。Bean生命周期包括实例化、属性赋值、初始化、使用和销毁。