SpringBoot学习笔记

什么是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参数调优

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(SpringBoot学习,spring,boot,java)