配置Spring MVC应用程序以更改html文件/模板而无需重新编译

时间:2014-08-22 21:14:45

标签: spring-mvc spring-boot thymeleaf

我有一个非常简单的Spring 4.0 Boot项目。我想启动应用程序,并能够动态更改/templates/中的html文件,而无需停止并重新启动应用程序。对静态资产(如java脚本或css文件)的更改没有问题。

以下是我的计划的详细信息:

没有XML配置文件。该类用于配置。

@Configuration
public class MVCConfiguration extends WebMvcConfigurerAdapter{

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

          registry.addResourceHandler("assets/**")
            .addResourceLocations("classpath:/templates/assets/");
          registry.addResourceHandler("/css/**")
            .addResourceLocations("/css/");
          registry.addResourceHandler("/img/**")
            .addResourceLocations("/img/");
          registry.addResourceHandler("/js/**")
            .addResourceLocations("/js/");

    }
}

这是我的控制器。

@Controller
public class ControlFreak {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(){
        return "index";
    }
}

index.html位于templates/

我使用这个类运行应用程序。

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
    }
}

2 个答案:

答案 0 :(得分:0)

您尝试使用IDE轻松完成的工作将在开发过程中节省大量时间。

首先,您需要通过设置:

将Spring Boot配置为不缓存Thymeleaf模板

spring.thymeleaf.cache=false

然后你只需要在调试模式下使用IDE启动应用程序(只需使用main方法调试类),每当你更改Thymeleaf模板时,你只需要指示IDE重新加载项目

在IntelliJ IDEA中,这是通过Reload Changed Classes菜单中的Run选项完成的。

我认为您可以将Eclipse配置为在每次更改时自动更新项目,但自从我使用它以来已经有一段时间了。

答案 1 :(得分:0)

项目路径

project.base-dir=file:///C:/temp/auth/

在开发期间重新加载模板

spring.thymeleaf.prefix=${project.base-dir}/src/main/resources/templates/
spring.thymeleaf.cache=false

开发期间重新加载静态资源

spring.resources.static-locations=${project.base-dir}/src/main/resources/static/
spring.resources.cache-period=0