如何在不重启的情况下重新加载弹簧启动中的其他静态资源?

时间:2018-01-28 17:37:26

标签: spring-boot livereload

我试图在弹出启动项目上设置一个新的资源位置,该项目启用了实时重新加载,但没有启动应用程序重启。我能够添加其他资源,但新目录中所做的任何更改都会导致应用程序重新启动。

documentation就此而言似乎很轻松。我必须误解一些东西。

我的布局如下:

- src
  - main
    - java
    - resources
      - static
- web
  - dist 

我的应用程序类看起来像这样:

    @Bean
    WebMvcConfigurer configurer () {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addResourceHandlers (ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/dist/**")
                    .addResourceLocations(""file:web/dist/"")
                    .setCachePeriod(0);
            }
        };
    }

    public static void main(String[] args)
    {
        SpringApplication app = new SpringApplication(Application.class);
        app.addListeners(new PropertyLogger());

        Properties properties = new Properties();
        properties.setProperty("spring.devtools.restart.additional-paths", "web/dist/");
        properties.setProperty("spring.devtools.restart.additional-exclude", "/dist/**");
        app.setDefaultProperties(properties);

        app.run(args);
    }

我已经阅读了几个类似的问题,这似乎是我能做的最好的。是否可以在没有完整应用程序重启的情况下启用dist上的实时重新加载?

顺便说一句,我的IDE是IntelliJ。我开始怀疑IntelliJ是否需要排除dist目录。如果是这样的话,我会跟进。

1 个答案:

答案 0 :(得分:0)

我已经把它打死了,终于找到了一个有效的解决方案。

    Properties properties = new Properties();
    properties.setProperty("spring.devtools.restart.additional-paths", "web/");
    properties.setProperty("spring.devtools.restart.additional-exclude", "dist/**");
    app.setDefaultProperties(properties);

将Web目录定义为附加路径以及用于其他排除的模式可以解决问题。

除非有支持我的结论的支持,否则我不会将此标记为已被接受。