关于Spring的一些简单记录

本文详细阐述了Spring框架中如何解决循环依赖、Spring与Springboot的区别,以及Springboot的自动装配、SpringIOC、AOP和事务管理的实现原理。Springboot通过约定配置简化开发,Spring则提供强大的依赖管理和面向切面编程支持。
摘要由CSDN通过智能技术生成
1. Spring 循环依赖是如何解决的

在Spring中,解决循环依赖的方式引入三级缓存.Spring中bean的创建过程可以分为两步,第一步叫实例化,第二步是初始化。解决循环依赖就是加载实例的半成品。在构建bean A时,如果需要未完全加载的其他bean B时,先加载bean B的半成品,完成bean A 的加载。
三级缓存:一级缓存,存储的是完整创建好的单例bean对象
                  二级缓存,存储尚未创建好的单例bean对象
                  三级缓存,存储的是单例bean的创建工厂

2. Spring和Springboot的区别

Spring是一个非常强大的企业级Java开发框架。提供一系列模块来支持不同的应用需求,如依赖注入,面向切面编程,事务管理,Web应用程序开发等。Springboot的出现,主要是起到了简化Spring应用程序的开发和部署,特别是用于构建微服务和快速开发的应用程序。
    相比与Spring,Springboot主要在下面几个方面提升了效率,降低开发成本:
        1. 自动装配,Spring boot 通过auto-configuration来减少开发人员的配置工作。通过一个个start依赖,使得开发人员更加专注与业务逻辑而不是配置。
        2. 内嵌web服务器,springboot内置了常见的web服务器(Tomcat,Jetty),可以轻松创建可运行的独立应用程序,无需外部web服务器
        3. 约定大于配置思想,Spring boot遵循约定大于配置的思想,通过一种约定的方式,来降低开发人员的配置工作。如默认读取spring.factories来加载starter,读取application.yml或application.properties文件进行属性配置等。

3. Springboot的自动装配是如何实现的?

    Spring Boot的自动装配是通过条件注解和Spring Boot Starter实现的。
    入口类注解 @SpringBootApplication -- @EnableAutoConfiguration,@SpringBootConfiguration, @ComponentScan
    @EnableAutoConfiguration-》AutoConfigurationImportSelector组件
    SpringFactoriesLoader读取META-INF/spring.factories文件,获取配置类的全路径类名
    条件注解进行过滤,@Conditional,@ConditionalOnClass等
    ImportSelector接口
    BeanDefinition
    实例化Bean对象    
    总的来说,Spring Boot的自动装配大大简化了项目的配置和初始化过程,它通过一系列的机制来智能地确定哪些组件应该被自动配置,并且允许开发者按需进行定制。这种自动化和约定大于配置的理念,使得Spring Boot能够快速启动和运行,同时保持了很高的灵活性。

4. Spring IOC 的简单理解

    IOC就是控制反转,在传统的程序设计中,应用程序代码控制着对象的创建和管理。在IOC中,控制关系发生了反转,控制权被转移到spring容器,容器来负责对象的创建和管理,并且在需要的时候时将它们注入到应用程序。这样实现的好处,使用者不用关心引用bean的实现细节,不用创建多个相同的bean,bean的修改依赖无需感知。

5. Spring AOP的理解

    AOP 面向切面编程,把公共的逻辑抽出来,让开发者更加专注业务的开发。Spring AOP 是通过代理模式实现的,具体有两种方式,JDK动态代理和CGLIB动态代理。在实际使用中,Spring AOP可以应用于多种场景,如事务处理、权限判断和日志记录等。通过定义切点和增强,可以实现对这些横切关注点的模块化管理,从而提高代码的复用性和可维护性。我们一般是通过注解和AOP相结合。大概的实现思路就是先定义一个注解,然后通过AOP去发现使用过该注解的类,对该类的方法进行代理处理,增加额外的逻辑,譬如参数校验,缓存,日志打印等等。

6.Spring事务是如何实现?

    Spring事务的原理主要涉及一下:
    1.代理机制,Spring通过AOP提供事务管理的功能。在Spring中,事务管理通过代理机制来实现。Spring可以通过JDK动态代理或者CGLIB动态代理来为目标对象生成 代理对象,在代理对象中添加事务管理的逻辑。
    2.事务管理器,Spring提供多种事务管理器,用于管理事务的提交,回滚等操作。
    3.事务注解,Spring提供了@Transactional注解,通过在方法或者类上注解,将方法或者类纳入事务管理范围,可以配置事务传播机制,隔离级别,超时时间,异常类型等。
    4.事务切面,Spring通过AOP将事务管理功能织入目标方法的执行过程中。在方法执行前开启事务,在方法执行后更具执行结果决定提交还是回滚事务。
综合来说,Spring事务的实现原理是通过AOP代理机制,事务管理器,事务注解和事务切面等多个组件共同协作实现对事务的管理。Spring事务提供了两种使用方式:声明式事务和编程式事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值