什么是SpringBoot?
SpringBoot是一个快速开发框架,能够帮我们快速整合第三方框架(Maven依赖关系#### Maven继承),内置嵌入Http服务器(Tomcat、Jetty),完全采用注解化,简化Xml配置,默认嵌入Tomcat服务器。最终以Java应用程序进行执行。
原理:通过maven继承方式+SpringMVC注解方式启动,内嵌tomcat;
SpringMVC3.0之后就可以使用注解启动SpringMVC,
使用java程序启动tomcat;
(1)快速整合第三方常用框架,原理 maven子父依赖关系,相当与需要整合的环境的Jar封装好依赖信息
(2)完全无配置化信息
如何初始化呢?没有XML,那么tomcat如何启动的呢?
注解是在什么时候产生的呢?spring3.0以上提供注解 @EnableWebMvc(相当于以前的一堆配置信息)
SpringMVC内置注解启动整个springMVC容器,使用java代码编写SpringMVC配置初始化
(3)内置Http服务器
java语言创建tomcat容器,使用类加载器classloader加载class文件,
使用java内置tomcat运行springMVC框架,原理:tomcat加载到sptingmvc注解启动方式,就会创建springmvc容器
一、核心点
1、敏捷开发(整合框架),弊端:封装太死,不方便扩展
2、无需tomcat(java应用程序运行,实际jar包),内置tomcat
3、减少XML配置(没有XML),配置文件properties
4、SpringCloud+SpringBoot
5、注解
二、SpringBoot--和SpringCloud有什么关联?
SpringBoot不是微服务框架,
微服务通讯技术:http+json(restful)轻量级
SpringCloud底层依赖于SpringBoot实现微服务接口(SpringBoot Web组件默认集成SpringMVC),使用SpringMVC编写微服务接口。
SpringBoot+SpringCloud 是微服务开发。
微服务开发---------RPC远程通讯技术、服务治理
SpringCloud是一套目前完整微服务解决框架,功能非常强大,如:注册中心,客户端调用工具,服务治理(负载均衡、断路器、分布式配置中心等)
核心区别:SpringCloud 微服务框架 ### RPC远程调用
SpringBoot单纯的实现快速开发
三、SpringBoot封装jar包原理
通过Maven的继承依赖关系,所有的jar包都在parent依赖
四、SpringCloud 使用RPC远程调用 用的是Http协议,会走rest风格,使用json风格进行传参;
它的核心 依赖组件是SpringBoot,SpringBoot又依赖于SpringBoot Web组件SpringMVC
五、什么是全局捕获异常
WEB开发的时候,请求500的时候,返回自己制定的数据
六、Spring aop通知(advice)分成五大类:
(1)前置通知
(2)正常返回通知
(3)异常返回通知
(4)返回通知
(5)环绕通知
七、什么是模板引擎?
伪html,格式,提高搜索引擎搜索。动态页面静态化
freemaker 动态页面静态化
八、为什么整合多数据源?分布式 微服务
在一个项目中,有多个JDBC连接,
多数据源产生的问题:事务
在实际项目中,怎么搭建多数据源,区分数据源???
1、分包结构
com.ww.test001 --访问001数据库
com.ww.test002 --访问002数据库
分布式事务解决方案 jta + automatic 传统项目
2、使用注解方式
Class UserService{
@datasourceTest001(自定义注解)
public void test001(){
}
@datasourceTest002(自定义注解)
public void test002(){
}
}
九、spring事务
spring的事务分类:编程事务、声明事务(XML方式、注解方式)
十、分布式事务管理
进行分包操作,每个包操作的数据库不相同,
传统项目使用jta+autoCAD进行分布式事务管理,将不同数据源的事务注册到第三方(autoCAD),两端提交协议+2pc
十二、什么是多环境配置?
分为不同环境配置文件
test--本地测试环境
sit--测试环境
prd--生产环境
十三、什么是热部署?
所谓的热部署:比如项目的热部署,就是在应用程序在不停止的情况下,实现新的部署。
原理:使用类加载器 classloader重新读取字节码到jvm内存。
如何纯手写一个热部署功能:
1、监听class文件是否有变动----版本号/修改时间
2、如果class文件有变动,就使用classloader进行重新读取
一般工具会带热部署功能。
SpringBoot的热部署功能:引入devtools Jar包 原理:重启功能
新添加的方法工具自带的热部署没有加载到 是因为该方法没有加载到SpringMVC容器中
十四、SpringBoot性能优化
1、扫包优化
将@SpringBootApplication注解
改为@ComponentScan 跟 @EnableAotoConfiguration
调整扫包范围
2、JVM参数调优
调优策略:初始化堆内存跟最大堆相同
减少垃圾回收次数
(1)内部启动配置
-XX:+PrintGCDetails -Xmx128M -Xms128M
(2)外部调优
java -server -Xms32m -Xmx32m -jar springboot_v2.jar
JDK bin 下面有个JConsole.exe来查看运行情况
3、默认tomcat容器 改为 Undertow
tomcat 吞吐量 5000 Undertow的吞吐量(每秒并发量)8000
4、tomcat参数调优