SpringBoot底层原理

传统构建应用程序

传统的项目构建是需要Spring中提供众多的子项目来构建Spring应用程序,Spring Framework提供核心功能,其他的负责数据获取消息传递等等,其他的子项目都依赖于Spring Framework,整合成一个完整的项目

随着业务需求的复杂化,大型化,传统的方式已经不再满足,比如,

  • 导入依赖繁琐:需要手动引入依赖,并且jar包互相有冲突
  • 项目配置繁琐:还需要写大量相应的配置文件.xml,在applicationContext.xml中要声明大量的bean对象,因为使用Spring这些对象,要先声明在使用

SSM框架 

SSM框架作为传统的构建应用程序框架,Spring + Spring MVC + MyBatis是传统 Java Web 开发的经典组合框架。

Spring Framework是Spring中最核心基础的部分。

IOC(控制反转)

下面展示了代码编写过程中耦合度偏高的状况,因为来了新的数据,而要修改bookDao的对象,就要重新编写代码,重新测试,重新确定逻辑,非常麻烦,所以我们使用对象是,尽量不要主动new创建对象,要转换为外部提供对象,保证低耦合度

而IOC的思想就是使用对象时,有主动new创建对象转换为由外部提供对象,此过程中对象创建控制权有程序转移到外部,整个过程的目的就是充分解耦

spring提供了一个容器,成为IOC容器,充当IOC思想中的外部,用于管理对象的创建和初始化的过程

而由IOC容器创建和管理的对象成为Bean

DI(依赖注入):在容器中简历bean和bean之间的依赖关系的过程,比如,dao层要依赖于service层实现save方法,而两个bean都在IOC容器中,所以IOC容器就为两个bean创建了依赖关系

IOC实例分析

1.导入Spring的坐标Spring-context之后再去 配置文件

2.创建Spring配置文件applicationContext.xml,在文件中配置Bean,告诉IOC容器哪些Bean是要管理的

3.初始化并获取IOC容器,并告诉IOC容器相关的配置信息在applicationContext.xml文件中

4.获取bean,并运行方法

DI案例分析

5.

6.即可以创建Dao的对象

7.在配置文件中描述Service于Dao层的关系

Bean

bean的作用范围说明了bean默认是单例模式,即同一个Bean对象创建出来的Dao指向同一地址,避免每管理一个bean都创建新的对象,浪费大量内存

Bean的实例化的三种方式

无参构造方法

Spring创建bean的时候,调用的的是无参构造方法

静态工厂构造方法

早期的工程中,就会使用静态工厂实例化Bean,首先创建一个工厂类,然后再配置中让bean指向工厂对象,再备注使工厂对象创造的方法

实例工厂实例化bean

首先创造实例工厂,这里与前面静态工厂不同的是有没有static修饰符,并且在运行方法的时候,实例工厂要先创建对象,再运行。其次再配置方面,首先创建一个bean指向该工厂类,再创建一个bean,指向该工厂bean要涉及的方法,就会很麻烦,如果方法名很多,则要创建不同的工厂bean指向不同的房方法

使用FactorBean实例化bean

这是实例工厂的变种,只需要创建出相应的统一的Factorybean方法,在该方法中用于创建不同的方法bean就行

SpringBoot

与传统构建项目相比,Springboot就是Spring的一个子项目,用于快速构建应用程序,有以下特点

起步依赖:sb提供一个起步依赖,整合了一个功能所需要的其他依赖,一节更比六节强!

自动配置:遵循约定大于配置原则,boot程序启动后,一些bean对象会自动注入到IOC容器中,不用手动声明

其他特性

 Bean扫描

扫描主要有两种方式

  • 标签:
  • 注解:

!!@ComponentScan的扫描范围是所在的包及其子包

为什么启动类只有一个注解?因为它相当于三个注解

--》

Bean注册

有以下四种衍生方式注入到IOC容器中

注册第三方

可是,与要想注册的对象来自于第三方(不是自定义的),是无法用@Component即衍生注解声明Bean的,就衍生出一下两种方式声明第三方对象

@Bean:要想将第三方对象注入到IOC容器中,就要在该方法创建新对象的时候,加上@Bean对象,将方法的返回值交给IOC容器管理,成为IOC容器的管理对象,

另外,如果要采用@Bean方法注册,不建议在启动类中,在配置类中集中注册

@Import:只需要@Import(xxx.class)就可以将xxx类中的bean对象自动注入的IOC容器中,开发中更多的是导入配置类和ImportSelector接口实现类

Bean的注册条件

bean只有在封装数据的时候才有意义,所以注入的bean必须在下面三种常用方式下才算有意义

总结:Bean在SSM和SpringBoot的不同

整合Mybatis

1.导入mybatis起步依赖,boot会自动注入bean对象到IOC容器

2.在.yml的文件中写数据库相关的配置,包括数据库的驱动,数据库的连接,数据库的用户名和密码等配置

3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值