• spring全家桶


    一、spring

    spring是一个ioc容器,用来管理Bean,使用以来注入实现控制反转,可以很方便的整合各种框架,提供AOP机制弥补OOP的代码重复问题,更方便将不同类不同方法中公共的处理抽取成切面,自动注入给方法执行,比如日志、异常等

    1.spring创建出来对象的作用域?

    作用域有singleton和prototype,默认为前者,设置延迟加载只对singleton有效。

    当scope为singleton时

    可以看出作用域为singleton时,对象只创建了一次,并且两者相等,虽然使用getBean方法两次,但是却只有一个对象,似乎对象不是getBean方法获得,这跟后面要说的延迟加载有关。

    当scope为prototype时

    当作用域为prototype时,创建了两个对象,并且两者不相等,说明使用一个getBean方法,就创建了一个新的对象。

    延迟加载:默认情况下容器启动之后,会将作用域为singleton的bean创建好,设置延迟加载容器启动之后,对作用域为singleton的bean不再创建,直到调用getBean方法才会创建,设置延迟加载需在配置文件中设置lazy-init属性。

    2.spring的核心?

    IoC(Inversion of Control)是控制反转的意思,这是一种面向对象编程的设计思想。在不采用这种思想的情况下,我们需要自己维护对象与对象之间的依赖关系,很容易造成对象之间的耦合度过高,在一个大型的项目中这十分的不利于代码的维护。IoC则可以解决这种问题,它可以帮我们维护对象与对象之间的依赖关系,降低对象之间的耦合度。

    说到IoC就不得不说DI(Dependency Injection),DI是依赖注入的意思,它是IoC实现的实现方式,就是说IoC是通过DI来实现的。由于IoC这个词汇比较抽象而DI却更直观,所以很多时候我们就用DI来代替它,在很多时候我们简单地将IoC和DI划等号,这是一种习惯。而实现依赖注入的关键是IoC容器,它的本质就是一个工厂。

    AOP(Aspect Oriented Programing)是面向切面编程思想,这种思想是对OOP的补充,它可以在OOP的基础上进一步提高编程的效率。简单来说,它可以统一解决一批组件的共性需求(如权限检查、记录日志、事务管理等)。在AOP思想下,我们可以将解决共性需求的代码独立出来,然后通过配置的方式,声明这些代码在什么地方、什么时机调用。当满足调用条件时,AOP会将该业务代码织入到我们指定的位置,从而统一解决了问题,又不需要修改这一批组件的代码。

    二、springmvc

    springmvc是spring对web框架的一个解决方案,提供了一个总的前端控制器servlet,用于接收请求,然后定义了一套路由策略(url到handle的映射)及适配执行handle;将handle结果使用

    试视图解析技术生成视图展现给前端

    三、springboot

    springboot是spring提供的一个快速开发的工具包,让程序员更方便的开发spring+springmvc应用,简化了配置(约定了默认配置),整合了一系列的解决方案,redis、mongodb、es可以开箱即用

    1.springboot的自动装配?

    整个自动装配的过程是:Spring Boot通过@EnableAutoConfiguration注解开启自动配置,加载spring.factories中注册的各种AutoConfiguration类,当某个AutoConfiguration类满足其注解@Conditional指定的生效条件(Starters提供的依赖、配置或Spring容器中是否存在某个Bean等)时,实例化该AutoConfiguration类中定义的Bean(组件等),并注入Spring容器,就可以完成依赖框架的自动配置。

    2.springboot注解的理解?

    @SpringBootApplication注解:

    在Spring Boot入口类中,唯一的一个注解就是@SpringBootApplication。它是Spring Boot项目的核心注解,用于开启自动配置,准确说是通过该注解内组合的@EnableAutoConfiguration开启了自动配置。

    @EnableAutoConfiguration的主要功能是启动Spring应用程序上下文时进行自动配置,它会尝试猜测并配置项目可能需要的Bean。自动配置通常是基于项目classpath中引入的类和已定义的Bean来实现的。在此过程中,被自动配置的组件来自项目自身和项目依赖的jar包中。

    @Import注解:

    @EnableAutoConfiguration的关键功能是通过@Import注解导入的ImportSelector来完成的。从源代码得知@Import(AutoConfigurationImportSelector.class)是@EnableAutoConfiguration注解的组成部分,也是自动配置功能的核心实现者。

    @Conditional注解:

    @Conditional注解是由Spring 4.0版本引入的新特性,可根据是否满足指定的条件来决定是否进行Bean的实例化及装配,比如,设定当类路径下包含某个jar包的时候才会对注解的类进行实例化操作。总之,就是根据一些特定条件来控制Bean实例化的行为。

    四、springcloud

    springcloud是spring推出的一套微服务的解决方案,准确来说我觉得springcloud是对微服务中出现的各种技术场景定义的一套标准规范,比如用zuul去实现应用网关,eureka实现微服务的注册和发现,ribbon去实现负载均衡,hystrix实现服务熔断,我们可以使用这一套组件快速落地微服务架构,以及微服务治理的一系列问题,我们只需要在springboot的项目基础上通过starter启动依赖,集成相关组件

    就可以解决各种问题。

  • 相关阅读:
    XCode15与iOS17/17.1 真机测试问题处理
    弹性蛋白酶中英文说明书
    HTML+CSS-项目:学成在线
    DirectX11 With Windows SDK--37 延迟渲染:光源剔除
    ruoyi-nbcio-plus基于vue3的flowable收回任务后重新进行提交表单的处理
    Biotin-SS-NHS ester|生物素-二硫键-活性酯|CAS:122266-55-1具有良好的水溶性
    输电线路的继电保护整定计算及装置
    IoT 物联网共享充电桩场景中设备资产定位和地理围栏开发实践
    JavaSE之List中ArrayList底层和LinkedList底层
    【算法分析与设计】回溯法(上)
  • 原文地址:https://blog.csdn.net/yb1887/article/details/126494620