springboot

springboot

1.单体项目的其他问题

1.1.功能的强耦合

由于所有业务都在一个项目中,随着业务模块的增加,系统会变得越来越复杂,一旦某些功能存在强耦合,会造成开发人员必须精通多个业务模块逻辑,多个领域知识,不利于团队、人员配合,也不利于项目扩展
需要将不同的功能和业务进行拆分,例如order-user项目,可以拆分为order和user两个项目,这样,order项目只关心和订单相关业务,不关心user相关业务,反之亦然,这样的功能拆分称之为纵向拆分

1.2.系统拆分

1.横向拆分(解决项目开发的强耦合)
根据项目的三层结构,控制层依赖业务层,依赖持久层,进行分模块的开发,不同的程序员开发不同的模块

在这里插入图片描述

2.纵向拆分(解决业务模块功能强耦合)
就是解决业务功能系统不同部分拆分成独立运行的系统项目,相互之间数据调用根据接口文件访问

在这里插入图片描述

1.3.并发集中

如果是单体项目,很有可能某一个功能并发量特别大,导致整系统响应慢,如果纵向拆分,即使某个系统并发量特别大,也不会影响别的系统的正常访问

2.springboot

2.1.背景

nginx解决了并发问题,但是没有解决并发集中问题,功能强耦合,需要进行拆分(纵向拆分),这种情况下,一种方便的工具框架就产生了-springboot

2.2.什么是springboot

一种基于spring框架,完成独立运行,自动配置的一种工具框架。

2.3.springboot的特点(相对web应用)

1.独立运行的spring项目
springboot封装了spring所有的启动过程,可以通过简单的方法实现启动一个具有spring框架功能的进程,如果不做web应用,不需要tomcat这种外部容器来加载spring配置文件,从而生成spring容器的过程,因为spring4.X版本的出现,几乎所有的配置都转换成了注解
2.springboot内嵌的servlet
不配置任何tomcat插件,不用将项目发布到任何外部的tomcat容器,直接在依赖总完成了默认的servlet容器整合,一旦启动了spring的独立运行机制,可以加载内嵌的servlet实现web应用的独立运行
3.springboot提供简化依赖
根据开发人员依赖的不同,早就封装了简化依赖,实现依赖的传递性,例如:当开发一个web应用是,暂不考虑持久层,只需要依赖一个spring-boot-starter-web,将会给你传递tomcat、spring-beans、jackson、log4g等非常多的jar包
4.springboot自动配置
默认自动的扫描范围
启动springboot工程,所有扫描范围内的注解都会加载到内存
根据依赖完成相关自动配置
springboot可以根据项目中完成的依赖资源,例如spring-boot-starter-web,自动配置就会判断功能是开发一个web应用,就会完成tomcat的自动加载,默认端口8080,还有其他配置信息等
以上特点导致springboot可以“0”配置启动一个web应用

2.4.springboot原理

springboot的启动类运行时,通过@SpringBootApplication注解扫描本包及本包下子包的注解,找到@Component、@Controller、@Service、@Repository等注解,管理bean(有set和get方法),哪用哪注入。
@Data是lombok包下的注解,自动生成tostring、get、set和构造方法等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值