您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

springboot热部署的两种方式是什么

2025/9/28 3:47:25发布34次查看
springboot和springmvc的区别
spring boot 内嵌tomcat,jetty和undertow容器,可以直接运行起来,不在再做部署;
spring boot 自动配置,减少了xml文件的大量配置;降低了项目搭建的复杂度
spring mvc是基于 servlet 的一个 mvc 框架 主要解决 web 开发的问题,因为 spring 的配置非常复杂,各种xml、 javaconfig、hin处理起来比较繁琐。于是为了简化开发者的使用,从而创造性地推出了spring boot,约定优于配置,简化了spring的配置流程。
spring 是一个“引擎”;
spring mvc 是基于spring的一个 mvc 框架 ;
spring boot 是基于spring4的条件注册的一套快速开发整合包。
springboot热部署的两种方式
springboot 1.3后才拥有springboot devtools热部署
①:spring-boot-devtools ②:spring loaded
方式一:
在项目的pom文件中添加依赖:
 <!--热部署jar--> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-devtools</artifactid> </dependency>
然后:使用 shift+ctrl+alt+/ (idea中的快捷键) 选择registry 然后勾选 compiler.automake.allow.when.app.running
方式二:
在项目中添加如下代码
 <build> <plugins>  <plugin>  <!-- springboot编译插件-->  <groupid>org.springframework.boot</groupid>  <artifactid>spring-boot-maven-plugin</artifactid>  <dependencies>   <!-- spring热部署 -->   <!-- 该依赖在此处下载不下来,可以放置在build标签外部下载完成后再粘贴进plugin中 -->   <dependency>   <groupid>org.springframework</groupid>   <artifactid>springloaded</artifactid>   <version>1.2.6.release</version>   </dependency>  </dependencies>  </plugin> </plugins> </build>
添加完毕后需要使用mvn指令运行:
首先找到idea中的edit configurations ,然后进行如下操作:(点击左上角的+,然后选择maven将出现右侧面板,在红色划线部位输入如图所示指令,你可以为该指令命名(此处命名为mvnspringbootrun))
点击保存将会在idea项目运行部位出现,点击绿色箭头运行即可
springboot配置文件
spring boot使用一个全局配置文件:主要是以下两种类型
application.properties :例:server.port=9998
application.yml(yaml) :例:server:
 port:8080
配置文件的作用主要是修改spring boot在底层的默认配置
spring boot 的核心注解
启动类上面的注解是@springbootapplication,它也是 spring boot 的核心注解,主要组合包含了以下 3 个注解:
@springbootconfiguration:组合了 @configuration 注解,实现配置文件的功能。
@enableautoconfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @springbootapplication(exclude = { datasourceautoconfiguration.class })。
@componentscan:spring组件扫描。
spring boot的starter的执行原理
利用starter实现自动化配置只需要两个条件——maven依赖、配置文件,这里简单介绍下starter实现自动化配置的流程。
引入maven实质上就是导入jar包,spring-boot启动的时候会找到starter jar包中的resources/meta-inf/spring.factories文件,根据spring.factories文件中的配置,找到需要自动配置的类
spring boot与spring mvc的区别
spring boot是spring和spring mvc的整合,而spring mvc只是spring的一个模块,一个轻量级的web层框架
spring boot几乎可以实现零配置,所有功能使用注解进行开发,运用了'约定大于配置'的思想,简化了项目开发
难度,而spring mvc需要依赖于xml配置进行开发
spring boot自带内置的tomcat,使得打包成jar包后可以直接运行,也可以选择使用外部的tomcat
spring boot还继承了许多第三方库配置,例如,jdbc, mongo, redis等,应用这些第三方库,几乎可以零配置
springcloud的服务注册和发现是怎样的原理
eureka包含两个组件:eureka server和eureka client
eureka server提供服务注册服务
各个节点启动后,会在eurekaserver中进行注册,这样eurekaserver中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到
eurekaclient是一个java客户端,用于简化eureka server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向eureka server发送心跳(默认周期为30秒)。如果eureka server在多个心跳周期内没有接收到某个节点的心跳,eurekaserver将会从服务注册表中把这个服务节点移除(默认90秒)
eureka三大角色:
eureka server 提供服务注册和发现
service provider服务提供方将自身服务注册到eureka,从而使服务消费方能够找到
service consumer服务消费方从eureka获取注册服务列表,从而能够消费服务
作为服务注册中心,eureka 和 zookeeper对比的优势:
著名的cap理论指出,一个分布式系统不可能同时满足c(一致性)、a(可用性)和p(分区容错性)。由于分区容错性p在是分布式系统中必须要保证的,因此我们只能在a和c之间进行权衡。
因此
zookeeper保证的是cp,
eureka则是ap
mybatis中的#和$的区别
#相当于对数据 加上 双引号,$相当于直接显示数据
传进来的数据会被视为字符串,并加上双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为order by id.
$将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id. 
3#方式能够很大程度防止sql注入。
$方式无法防止sql注入。
$方式一般用于传入数据库对象,例如传入表名.
一般能用#的就别用$.
mybatis排序时使用order by 动态参数时需要注意,用$而不是#
字符串替换
默认情况下,使用#{}格式的语法会导致mybatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在sql语句中插入一个不改变的字符串。比如,像order by,你可以这样来使用:
order by ${columnname}
这里mybatis不会修改或转义字符串。
redis怎样淘汰数据
volatile-lru :从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中随机挑选数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中随机挑选数据淘汰
no-envivtion(驱逐):禁止驱逐数据
lru机制:
redis保存了lru计数器server.lrulock,会定时的去更新(redis定时程序severcorn()),每个redis对象都会设置相应的lru值,每次访问对象的时候,redis都会更新redisobject.lru。
lru淘汰机制:在数据集中随机挑选几个键值对,取出其中lru最大的键值对淘汰。所以,redis并不能保证淘汰的数据都是最近最少使用的,而是随机挑选的键值对中的。
ttl机制:
redis数据集结构中保存了键值对过期时间表,即 redisdb.expires。
ttl淘汰机制:在数据集中随机挑选几个键值对,取出其中最接近过期时间的键值对淘汰。所以,redis并不能保证淘汰的数据都是最接近过期时间的,而是随机挑选的键值对中的。
redis在每服务客户端执行一个命令的时候,会检测使用的内存是否超额
以上就是springboot热部署的两种方式是什么的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product