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.mode
, spring.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