操作方法:Maven的Spring Boot和Thymeleaf

Spring Boot是一款很棒的软件,可让您在几秒钟内引导Spring应用程序。 它确实有效。 尽可能少的配置即可上手。 而且仍然可以更改默认值。 让我们看看用Thymeleaf和Maven引导Spring MVC并在IntelliJ中使用它是多么容易。

Spring MVC + Thymeleaf与Maven的基本设置

确保使用以下命令安装了Maven 3: mvn --version 。 导航到要在其中创建项目的目录并执行Maven原型:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=pl.codeleak.demos.sbt -DartifactId=spring-boot-thymeleaf -interactiveMode=false

上面的命令将创建一个新目录spring-boot-thymeleaf 。 现在,您可以将其导入到IDE中。 就我而言,这是IntelliJ。

下一步是配置应用程序。 打开pom.xml并添加一个父项目:如果未指定,则来自父项目的值将是该项目的默认值。

下一步是添加Web依赖项。 为了做到这一点,我首先删除了所有先前的依赖项(实际上是Junit 3.8.1),并添加了以下依赖项:现在,等待一秒钟,直到Maven下载依赖项并运行mvn dependency:tree来查看包含了哪些依赖项。

接下来是包装配置。 让我们添加Spring Boot Maven插件:通过以上步骤,基本配置已准备就绪。 现在我们可以运行该应用程序了。 Spring Boot Maven插件提供了两个run目标和repackage目标。 因此,让我们使用mvn spring-boot:run应用程序。 该命令应产生Hello World! 。 请注意, App类具有main方法。 因此,实际上,您可以在IntellJ(或任何其他IDE)中运行此类。

Hello World!

但请稍等。 这不是Web应用程序。 因此,让我们修改App类,使其成为Spring Boot应用程序的入口点:

package pl.codeleak.demos.sbt;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@EnableAutoConfiguration
@Configuration
@ComponentScan
public class App {public static void main(String[] args) {SpringApplication.run(App.class);}
}

除了上述内容外,我还将删除AppTest因为它很烂(它是由maven-archetype-quickstart创建的)! 现在我们可以再次运行该应用程序以查看会发生什么:

java.lang.IllegalStateException: Cannot find template location: class path resource [templates/] (please add some templates or check your Thymeleaf configuration)

明确。 然后添加一些Thymeleaf模板。

Thymeleaf模板放在哪里?

模板的默认位置是…classpath中可用的templates 。 因此,我们需要至少将一个模板放入src/main/resources/templates目录。 让我们创建一个简单的例子:再次运行该应用程序,将在端口8080上使用我们的应用程序启动嵌入式Tomcat:

Tomcat started on port(s): 8080/http

好。 但是缺少了一些东西。 当我们导航到localhost:8080 ,将看到404页面。 当然! 还没有控制器。 因此,让我们创建一个:

package pl.codeleak.demos.sbt.home;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
class HomeController {@RequestMapping("/")String index() {return "index";}
}

再次运行该应用程序后,您应该可以看到Hello Spring Boot! 页!

添加静态资源

与Thymeleaf模板类似,默认情况下,静态资源是从classpath提供的。
我们可以将CSS文件放入src/main/resources/css ,将JavaScript文件放入src/main/resources/js等。

在Thymeleaf模板中,我们像这样引用它们:

将包装从罐子转换为战争

但是,如果我们想将应用程序作为纯Web应用程序运行并将其作为war软件包提供,该怎么办? 使用Spring Boot相当容易。 首先,我们需要将pom.xml的包装类型从jar转换为war (包装元素)。 其次–确保Tomcat是提供的依赖项:最后一步是引导servlet配置。 创建Init类并从SpringBootServletInitializer继承:

package pl.codeleak.demos.sbt;import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;public class Init extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(App.class);}
}

我们可以检查配置是否适用于Maven: mvn clean package 。 战争文件应创建:

Building war: C:\Projects\demos\spring-boot-thymeleaf\target\spring-boot-thymeleaf-1.0-SNAPSHOT.war

使用Maven直接从war文件启动应用程序:

java -jar target\spring-boot-thymeleaf-1.0-SNAPSHOT.war

有了一个战争项目,我们可以在IntelliJ中运行该应用程序。 更改包装后,IntellJ应该检测项目中的更改,并在其中添加Web构面。 下一步是配置并运行Tomcat服务器。 导航到“ Edit Configurations然后添加带有爆炸战争产物的Tomcat服务器。 现在,您可以像其他任何Web应用程序一样运行该应用程序。

重新加载Thymeleaf模板

由于应用程序在IntelliJ中的本地Tomcat服务器上运行,因此我们可以在不重新启动服务器的情况下重新加载静态资源(例如CSS文件)。 但是默认情况下,Thymeleaf会缓存模板,因此为了更新Thymeleaf模板,我们需要更改此行为。 为此,使用以下属性将application.properties添加到src/main/resources目录: spring.thymeleaf.cache=false 。 重新启动服务器,从现在开始,您可以重新加载Thymeleaf模板,而无需重新启动服务器。

更改其他配置默认值

缓存配置不是我们可以调整的唯一可用配置。 请查看ThymeleafAutoConfiguration类以查看您可以更改的其他内容。 仅举几例: spring.thymeleaf.modespring.thymeleaf.encoding

最后的想法

Spring Boot简化了引导Web应用程序的过程。 仅需几步,您就可以拥有完全正常运行的Web应用程序,该应用程序可以是独立的,也可以在任何Servlet环境中运行。 除了学习Spring配置之外,您还可以专注于开发。 要进一步了解Spring Boot,请阅读该手册,并查看提供了许多有用的入门教程的Spring指南。 请享用!

资源资源

  • Spring Boot Thymeleaf项目源
  • Spring Boot参考指南
  • Spring指南
  • 胸腺项目

翻译自: https://www.javacodegeeks.com/2014/04/how-to-spring-boot-and-thymeleaf-with-maven.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csharp: 百度语音合成

public string API_id "3333"; //你的IDpublic string API_record null; public string API_record_format null; public string API_record_HZ null;public string API_key "geovindu"; //你的KEYpublic string API_secret_key "geovindu"…

20080408 - VS2003 中 Jscript 文件中文乱码问题

在 VS2003 中新建 Jscript 文件中使用中文时,如果和网页的编码不一致,有可能会出现中文乱码问题。 而 VS2003 的Web页面默认是用 UTF-8,这是多语的首选方案。 但 VS2003 产品的本地化工作可能做得不到位,在其中新建的 Jscript 文件…

一个简单的发布工具

自己写的一个简单工具,可以把做好的程序中的.cs,.sln,等代码文件排除掉,只剩下页面文件 是用.net 2.0做的程序文件 转载于:https://www.cnblogs.com/itants/archive/2007/10/24/935824.html

用于大型事件处理的Akka Java

我们正在设计一个大型的分布式事件驱动系统,用于跨事务数据库的实时数据复制。 来自源系统的数据(消息)在到达目的地之前经历了一系列转换和路由逻辑。 这些转换是多进程和多线程的操作,包括可以同时执行的较小的无状态步骤和任务…

pygame-KidsCanCode系列jumpy-part8-记录历史最高分

通常在多玩家的游戏中,每个玩家都会有自己的得分,最高分数会成为该游戏的最佳记录。这一篇,学习下如何记录最高得分:(为了简化代码,本文采用文件方式,仅记录本机得分,明白原理后&…

linux下查看进度命令,在Linux系统中使用Coreutils Viewer显示命令运行进度

Coreutils Viewer(cv)是一个简单的程序,它可以用于显示任何核心组件命令(如:cp、mv、dd、tar、gzip、gunzip、cat、grep、fgrep、egrep、cut、sort、xz、exiting)的进度。它使用文件描述信息来确定一个命令的进度,比如cp命令。cv之美在于&…

每个Java开发人员都应该阅读的10本书

我已经阅读了自己的软件开发书籍,并且发现发现一本我想多次阅读的书籍非常罕见。 但是,有时我会发现一本书,每次阅读时都会教给我新的东西。 这篇博客文章是对这些稀有宝石的致敬。 现在,我毫不犹豫地向您介绍十本书&#xff0c…

存储过程生成流水号

1,首先在数据库中创建一个存放流水号的表 CREATE TABLE [dbo].[NumSeq] ([Cate] [varchar] (2) NOT NULL ,[DateNo] [varchar] (4) NOT NULL ,[Seq] [int] NULL ,[CrTime] [datetime] NOT NULL ) 上面的代码中,Cate 字段为流水号的头,可以…

tennylvHTML5实现屏幕手势解锁(转载)

来源:https://github.com/lvming6816077/H5lockhttp://threejs.org/examples/http://www.inf.usi.ch/phd/wettel/codecity-download.html (JSCity:把源码可视化成建筑物的 JS 库)http://www.alloyteam.com/2015/07/html5-shi-xian-ping-mu-shou-shi-jie-suo/ (Web前…

Linux中mysql的卸载和重装,linux mysql 卸载后重装

$sudo apt-get remove mysql-common清理残留数据:$sudo dpkg -l |grep ^rc|awk {print $2} |sudo xargs dpkg -P按照正常安装步骤安装注意:如果你想进行远程访问或控制,那么你要做两件事:其一:mysql>GRANT ALL PRIVILEGES ON xoops.* TO x…

NOIP模拟赛(by hzwer) T3 小奇回地球

【题目背景】 开学了,小奇在回地球的路上,遇到了一个棘手的问题。 【问题描述】 简单来说,它要从标号为 1 的星球到标号为 n 的星球,某一些星球之间有航线。 由于超时空隧道的存在,从一个星球到另一个星球时间可能会倒…

oracle 执行多条insert 语句

其实这是一个sqlserver的脚本改的。用脚本的原因是:当时我的oracle不能导入execl,也不能从别的数据库直接导入,最后就用脚本了。 insert all INTO TestA (ID, tbname, colname, coltxt, collen, coltype, coloper, colcontent) VALUES(1, A主表, ZHD0A00…

JUnit ExpectedException规则:超越基础

JUnit测试中有多种处理异常的方法。 正如我在以前的一篇文章中所写的那样 ,我最好的方法是使用org.junit.rules.ExpectedException规则。 基本上,规则是用org.junit.Before , org.junit.After , org.junit.BeforeClass或org.junit…

sql 基本操作

数据库表的操作 SQL code ------------------------------列操作-------------------------------------添加列ALTERTABLEt ADDMycolumn intidentity(1,1)||notnulldefault(0) --删除列altertablet dropcolumnMycolumn --修改列altertablet altercolumnMycolumn varchar(20) no…

[EffectiveC++]item34:区分接口继承和实现继承

[EffectiveC]item34:区分接口继承和实现继承 转载于:https://www.cnblogs.com/jeanschen/p/3363569.html

web 上传文件到linux没权限,Javaweb上传文件到Linux 没有读写权限

一、 问题描述背景描述:0.saas-business-运营后台,website-网站页面。1.javaweb程序(saas-business)部署在linux系统 tomcat服务器下,使用该程序里面上传图片功能,上传图片至linux服务器挂载盘(共享盘)中/nfs/uploads/目录下。tom…

2008Beta 版AJAX的一个奇怪的问题

最近在用ASP.NET做一个MIS系统,为了使页面有比较好的效果,减少刷新,用了AJAX控件,比如日历,水印等。 最主要的是用它来实现几个DropDownList控件之间的联动。起初问题是当也面加载时…

如何将IntelliJ项目添加到GitHub

尽管GitHub文档包含有关如何将现有GitHub项目添加到本地计算机的好信息,但是我对如何将本地计算机上的现有(未版本化)项目添加到GitHub的了解还很少。 这是我使用的步骤。 从IntelliJ 选择“ VCS”菜单->在版本控制中导入->在GitHub上…

REST-framework快速构建API--四部曲

代码目录结构: 一、使用原生APIView 使用rest-framework原生的APIView实现过程: 以url(r^books/$, views.BookView.as_view(),name"books")为例进行流程分析, 1、views.BookView.as_view()>APIView的as_view方法>父类【View】…

aix内核是linux,查看Linux及AIX硬件信息方法总结

一. CPU信息1. AIX1.查看CPU核心数:# pmcycles -m# pmcycles -mCpu 0 runs at 1900 MHzCpu 1 runs at 1900 MHzCpu 2 runs at 1900 MHzCpu 3 runs at 1900 MHz2.查看逻辑CPU个数# bindprocessor -q# bindprocessor -qThe available processors are: 0 1 2 33.查看CP…