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启动依赖,集成相关组件

就可以解决各种问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值