Spring

首页 标签 Spring
# Spring #
关注
46877内容
SpringMVC的拦截器用过没有?
拦截器常用于登录校验、参数处理、数据脱敏等,通过实现`HandlerInterceptor`接口,并在配置类中注册,限定拦截路径。与过滤器相比,拦截器基于Spring容器,仅拦截Controller请求,而过滤器作用于所有Web资源。异常处理可使用`@RestControllerAdvice`和`@ExceptionHandler`实现全局捕获。常用注解包括`@RequestMapping`、`@RequestBody`、`@RequestParam`、`@PathVariable`、`@ResponseBody`等,简化开发。
Spring Boot配置的优先级?
SpringBoot项目支持多种配置方式,主要包括配置文件(application.properties、.yml、.yaml)和外部配置(如系统属性、命令行参数)。优先级由高到低为:命令行参数 > 系统属性 > .properties > .yml > .yaml。自动配置核心是@SpringBootApplication中的@EnableAutoConfiguration,通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类,并结合@Conditional条件注解按需注入Bean。
什么是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动态代理技术生成代理类,拦截接口调用并透明嵌入远程通信逻辑,屏蔽底层网络细节,实现“本地调用即远程调用”的无缝体验,提升开发效率与系统解耦能力。
|
1天前
|
自定义注解
本文介绍如何在Spring项目中实现自定义注解,结合AOP与过滤器应用于日志、权限控制等场景。通过@Target、@Retention等元注解定义注解,配合Spring AOP或拦截器实现功能增强,提升代码可读性与复用性。
免费试用