
spring
文章平均质量分 96
找不到、了
纵有千古,横有八荒。
前途似海,来日方长。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring的@Indexed注解
本文介绍了Java中@Indexed注解的应用场景及实现方式。1. Spring框架中的@Indexed用于优化启动性能,通过预编译生成索引文件(META-INF/spring.components)替代运行时扫描,适合包含大量注解类的大型项目。2. JPA/Hibernate中的@Index用于数据库表字段索引,提升查询效率。3. 其他场景包括Elasticsearch的全文检索索引配置。4. 文章还提供了自定义@Indexed注解的方法。最佳实践建议在组件数量多(>100)时使用spring-co原创 2025-07-26 13:31:52 · 916 阅读 · 0 评论 -
Spring和SpringBoot的动态代理区别联系
摘要:Spring框架通过代理机制实现AOP功能,主要包括JDK动态代理和CGLIB代理两种方式。JDK动态代理基于接口,通过InvocationHandler实现方法增强;CGLIB代理则通过生成目标类的子类来实现代理。Spring 5.x默认使用JDK动态代理,而Spring Boot 2.x及以上版本默认采用CGLIB代理。代理机制广泛应用于AOP切面、事务管理(@Transactional)、异步方法(@Async)和声明式缓存(@Cacheable)等场景。开发者可以通过@Pointcut定义切点原创 2025-07-18 16:45:51 · 710 阅读 · 0 评论 -
Spring的@ControllerAdvice对全局异常处理
ControllerAdvice是SpringMVC中用于全局处理的注解,它配合@ExceptionHandler处理全局异常,@ModelAttribute预设全局数据,以及@InitBinder实现请求参数的预处理。通过@ExceptionHandler可以捕获并处理特定类型的异常,@ModelAttribute可以注入Model中的全局属性,@InitBinder则用于初始化WebDataBinder,注册自定义编辑器,对请求参数进行预处理。 @ControllerAdvice不是传统AOP意义。原创 2025-07-17 14:48:26 · 642 阅读 · 0 评论 -
Springboot框架中的starter的介绍
SpringBoot Starter机制实现了开箱即用的自动化配置,通过封装功能模块简化开发流程。文章详细介绍了starter的定义、特点(自动装配、易于集成)和核心注解。重点讲解了如何自定义starter,包括创建配置类、自动装配类,以及在META-INF/spring.factories中注册的方法。通过HelloService示例演示了starter的实现过程,并说明其使用场景(日志、短信、Redis等)。自定义starter能提升模块复用性,使功能组件"随用随取",是现代微服务开发的高效扩展方式。原创 2025-07-15 14:04:16 · 1236 阅读 · 0 评论 -
Spring常用注解的总结
本文系统介绍了Spring框架中的核心注解及其应用场景。主要内容包括:1)Web开发相关注解,如@RestController和@RequestMapping用于构建RESTful API;2)容器管理注解,包括@Component、@Configuration和依赖注入相关注解;3)AOP编程相关注解,如@Aspect和各种通知类型;4)事务管理注解@Transactional。文章通过代码示例展示了各类注解的实际用法,并分析了注解在提高开发效率、增强代码可维护性方面的重要作用。最后还讨论了未加注解的类无原创 2025-04-25 13:57:53 · 1053 阅读 · 0 评论 -
Spring的Bean原型模式下的使用
摘要:本文探讨了Spring中原型(Prototype)模式Bean的使用问题与解决方案。问题原因包括@Autowired注入只初始化一次、代理模式问题及不当获取方式。提供了四种解决方案:通过ApplicationContext获取、使用ObjectProvider、Lookup方法和Provider接口。分析了原型模式的适用场景:有状态Bean、线程不安全对象、需要新实例及避免副作用的场景。最后指出使用注意事项,包括内存管理、性能影响、依赖管理和测试复杂性,强调需权衡资源开销与功能需求。原创 2025-07-07 21:54:27 · 1280 阅读 · 0 评论 -
AOP、Interceptor、Filter关于日志记录的联系与区别
摘要: Spring框架中AOP、Filter和Interceptor均可用于日志记录,但适用场景不同。AOP适用于业务层(@Service),记录方法调用、执行时间等核心业务日志,通过切面编程实现环绕增强;Interceptor属于SpringMVC层,适合记录Controller的HTTP请求参数、URL等Web相关日志;Filter作为Servlet容器级拦截,处理原始请求/响应数据(如Body)。三者互补:Filter全局拦截请求,Interceptor处理Web层行为,AOP聚焦业务逻辑。组合使用原创 2025-06-29 13:15:46 · 949 阅读 · 0 评论 -
过滤器(Filter)和拦截器(Interceptor)的介绍
1、定义是 Servlet 规范规定的,在 Servlet 前执行的,用于拦截和处理 HTTP 请求和响应。拦截的是request请求,基于回调,拦截的是地址,粒度很大。2、方法通过实现Filter接口,分别是初始化方法dofilter方法和销毁方法随着容器的启动和销毁而初始化和销毁,依赖于servlet容器。过滤器拦截的是地址栏请求,过滤器实在进入容器后执行的servlet之前后执行,针对的在处理业务之前的操作。这个方法的调用作为分水岭。原创 2025-06-28 13:14:21 · 1340 阅读 · 0 评论 -
Spring中bean的生命周期回调方法和执行顺序
1、对于普通的 Java 对象的生命周期是实例化、该对象不再被使用时通过垃圾回收机制进行回收实例化--->属性赋值---->初始化----->销毁一种是初始化回调,一种是销毁回调。合理的掌握bean在生命周期的初始化回调和销毁的函数,可帮助开发者编写更加健壮的程序。参考文章:1、Spring的核心模块原理介绍_spring 原理-CSDN博客2、Spring-Beans的生命周期的介绍_spring bean的生命周期-CSDN博客3、原创 2025-06-07 12:50:50 · 1165 阅读 · 0 评论 -
Java设计模式之《单例模式》
单例模式在基础设施组件(日志、配置、连接池等)中使用最为广泛,但在业务代码中应谨慎使用,以避免造成不必要的耦合。在Java中,枚举是实现单例模式的最佳实践,除非你需要延迟加载(枚举是类加载时就初始化),否则应该优先考虑使用枚举方式实现单例。原创 2025-06-05 20:55:49 · 1287 阅读 · 0 评论 -
Conditional注解的使用
摘要:Spring框架中的@ConditionalOnBean和@ConditionalOnMissingBean注解用于实现条件化Bean创建。前者在容器存在指定Bean时创建当前Bean(如配置JdbcTemplate需要先有DataSource),后者在容器不存在指定Bean时创建(如提供默认DataSource)。两者结合可实现灵活配置(如RedisService自动装配和默认CacheService)。通过指定Bean名称或类型可实现更精确控制。这些注解是SpringBoot自动配置的核心,合理使原创 2025-05-30 11:44:30 · 895 阅读 · 0 评论 -
@Configuration 与 @Component 的区别
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller原创 2025-05-23 23:33:55 · 1144 阅读 · 0 评论 -
深入了解Springboot框架的启动流程
Springboot是依赖于spring的,除了拥有spring的全部功能以外,Springboot无需繁琐的xml配置(约定大于配置),有application.properties/yml配置文件,还有static静态配置目录,这取决于它自身强大的自动装配功能;并且自身已嵌入Tomcat、Jetty等web容器,集成了springmvc,使得springboot可以直接运行,不需要额外的容器。 依赖于强大的@EnableAutoConfiguration注解,通过SpringFactoriesLo原创 2025-05-22 11:59:45 · 885 阅读 · 0 评论 -
BeanFactory和FactoryBean的区别
IoC是Spring的核心思想,即对象的创建和依赖关系的管理由Spring容器(而非硬编码)完成。容器接管了对象生命周期的控制权。原创 2025-05-19 23:10:16 · 831 阅读 · 0 评论 -
Spring-Beans的生命周期的介绍
本文详细介绍了Spring框架的核心组件及其功能,特别是容器层中的beans、context、core和expressionlanguage组件。重点讲解了Bean组件的定义、生命周期、执行时间和作用域。Bean的生命周期包括实例化、属性填充、初始化和销毁四个阶段,其中初始化阶段涉及Aware回调和初始化回调。Bean的作用域分为singleton、prototype、request和session,分别适用于不同的应用场景。此外,文章还提到了三级缓存在属性填充阶段的作用,并提供了代码示例来说明Bean的生原创 2025-05-18 21:55:55 · 1145 阅读 · 1 评论 -
就ThreadLocal使用时OOM的讨论
本文探讨了ThreadLocal类的使用及其潜在的内存泄漏问题。ThreadLocal为每个线程提供独立的变量副本,但其存储机制和垃圾回收行为可能导致内存泄漏,特别是在线程池环境中。内存泄漏的主要原因包括ThreadLocalMap中Entry的key为弱引用而value为强引用,以及线程长期存活导致ThreadLocalMap无法被回收。原创 2025-05-18 12:02:15 · 1068 阅读 · 0 评论 -
多线程下的事务失效及解决形式
本文探讨了多线程和并发的基本概念,并深入分析了多线程事务与单线程事务的主要区别和联系。多线程事务在并发性、数据一致性、锁的使用和性能方面与单线程事务存在显著差异,但两者都遵循事务的ACID属性。使用TransactionSynchronizationManager手动绑定事务上下文,以及通过join()方法确保子线程完成后再提交事务。这些方法有助于在多线程环境中维护数据的一致性和完整性。原创 2025-05-12 15:13:13 · 1377 阅读 · 0 评论 -
谈谈对Springboot框架的理解
本文深入解析了SpringBoot自动装配机制,从核心原理到实际应用场景。主要内容包括:自动装配核心流程:通过@SpringBootApplication注解触发,利用SpringFactoriesLoader加载META-INF/spring.factories中的配置类,结合条件注解(如@Conditional)实现智能装配。关键组件分析:@SpringBootConfiguration:标识配置类@ComponentScan:组件扫描@EnableAutoConfiguration原创 2025-04-29 20:29:49 · 1098 阅读 · 0 评论 -
谈谈对SpringMvc的理解
前言SpringMVC是一种web层mvc框架,原创 2025-04-27 21:54:18 · 1140 阅读 · 0 评论 -
关于Mybatis和JDBC的联系
前言基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。原创 2025-04-27 16:08:44 · 1055 阅读 · 0 评论 -
@Autowired依赖注入的原理介绍
以下为注解的结构图该注解支持标注在字段、构造函数、方法以及参数上。其中的关键属性required默认值为true,表示如果没有合适的 Bean 可以注入,则会抛出异常。required如果为false的时候,表示可以暂时不实例化。原创 2025-04-25 17:16:44 · 1010 阅读 · 0 评论 -
如何合理使用Spring的事务
事务管理器—主要用于平台相关事务的管理:事务定义信息(隔离、传播、超时、只读)—通过配置如何进行事务管理。:事务具体运行状态—事务管理过程中,每个时间点事务的状态信息。:隔离级别获取:传播行为获取getTimeout:获取超时时间isReadOnly是否只读(保存、更新、删除—对数据进行操作-变成可读写的,查询-设置这个属性为true,只能读不能写)原创 2025-04-24 13:52:44 · 1226 阅读 · 0 评论