南京排名推广(南京产品推广)
39
2023-01-02
本文目录一览:
我们在开发SpringBoot项目时,经常需要重启才能使新写的代码生效,特别是当项目变大时,一次重启就要一两分钟,相当耗时。有什么办法可以实现热部署呢?其实还是有的。
第一步,引入devtools依赖,需要注意的是这个依赖只能放在应用模块,不能放在父模块,否则会有问题
第二步,编译项目,每次编译项目,项目就会热部署,idea里面点击Build Project或者按Ctrl+F9都可以
第三步,测试,我把HelloController里面的输出从hello world改成hello world123,按ctrl+f9,看下控制台说明重启成功了
访问浏览器看到已经是修改后的返回值了
其实按照SpringBoot官方的说法这种方式不是严格意义的热部署,而是热重启,因为每次编译项目都会重启,那它和手动启动有啥区别呢?
热重启其实有两个ClassLoader,一个加载第三方库,一个加载工作区的类,热重启只会重新加载工作区的类,所以启动时间会大大缩短。看上图我们发现热重启启动只需1.15S,而冷启动需要3.5S
最后这个功能在idea有点bug就是有时会发现热部署后接口返回404,这时需要加一段配置
spring-boot 适合开发web应用的
静态资源访问
在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。
默认配置
Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources
举例:我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件。启动程序后,尝试访问。如能显示图片,配置成功。
渲染Web页面
在之前的示例中,我们都是通过@RestController来处理请求,所以返回的内容为json对象。那么如果需要渲染html页面的时候,要如何实现呢?
模板引擎
在动态HTML实现上Spring Boot依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。
Spring Boot提供了默认配置的模板引擎主要有以下几种:
Thymeleaf
FreeMarker
Velocity
Groovy
Mustache
Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,具体可见后文:支持JSP的配置
当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。
Thymeleaf
Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。
Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。
功能特性
创建独立的Spring应用程序。
直接嵌入Tomcat、Jetty和Undertow(无需部署WAR文件)。
使用特定的POM文件,简化Maven配置。
尽可能自动化配置Spring。
提供产品级特性,比如指标测量、健康检查、外部配置等。
绝对没有代码生成或XML配置。
参考手册提供了所有功能的详细描述,以及常用功能的使用指南。
快速开始
Spring Boot 提供了命令行工具,可以为Spring应用快速建立原型。可以通过Groovy脚本进行配置,这意味着不需要熟悉Java语法并且减少大量的模板代码。在文档中可以参照安装Spring Boot CLI使用命令行。
如果你是Java开发者,可以使用start.spring.io生成一个基本的项目结构,然后参考下面的“快速开始”示例,或者阅读新手指南。
推荐配合依赖管理系统在使用spring-boot——这段脚本拷贝粘贴到你的构建中。如果对这些不熟悉怎么办?请参见新手指南中使用Maven和Gradle构建的章节。
ZSH
parent
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-parent/artifactId
version1.2.7.RELEASE/version
/parent
dependencies
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-web/artifactId
/dependency
/dependencies
1
2
3
4
5
6
7
8
9
10
11
parent
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-parent/artifactId
version1.2.7.RELEASE/version
/parent
dependencies
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-web/artifactId
/dependency
/dependencies
hello/SampleController.java
Java
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
关于springboot网站开发和springboot 网站的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注云尚网络www.ysfad.net。
发表评论
暂时没有评论,来抢沙发吧~