使用Spring MVC和Boot刷新静态内容

pal*_*lto 43 java spring-mvc spring-boot

我正在评估Spring MVC&Boot和AngularJs来构建Web应用程序.我遇到的问题是,当我对静态内容(html,js,css)进行修改时,我每次都必须重新启动应用程序.我希望有一种方法可以解决这个问题,因为重新启动静态内容更改的整个应用程序效率不高.我尝试过的每个其他Web应用程序框架都允许动态更新静态内容文件(甚至只是Spring MVC和普通的旧WAR应用程序).

我从"使用Spring Boot Actuator构建RESTful Web服务"指南(http://spring.io/guides/gs/actuator-service/)设置了我的项目.基本上它使用Spring Boot和MVC控制器来创建REST服务.另外,我使用"使用AngularJS使用RESTful Web服务"指南(http://spring.io/guides/gs/consuming-rest-angularjs/)来构建AngularJS的前端.它创建一个显示REST服务响应的网页.我所做的唯一改变是请求发送到我的应用程序而不是" http://rest-service.guides.spring.io/greeting ".我的静态内容存储在"src/main/resources/public"文件夹中.此设置正常工作,但它不会重新加载静态内容.

eig*_*gil 33

回顾原始问题

我遇到的问题是,当我修改我的静态内容(html,js,css)时,我每次都要重启应用程序

我有同样的问题,最后通过添加解决了它

<configuration>
    <addResources>true</addResources>
</configuration>
Run Code Online (Sandbox Code Playgroud)

spring-boot-maven-pluginpom.xml 我被这个弹簧引导devtools事情混淆,但它没有任何效果什么我做到了.

我的静态内容存储在"src/main/resources/public"文件夹中.

你的道路很好.src/main/resources/static也没关系.

  • 我发现这适用于 `mvn spring-boot:run`,但现在 Eclipse 中根本无法加载资源。 (3认同)
  • 您介意分享一下您在“pom.xml”中插入配置标签的具体位置吗? (2认同)

Ste*_*eve 26

啊......我也遇到过这个问题.

不要将静态内容放在classpath src/main/resources/public文件夹中,而是将其放入其中src/main/webapp,与其他任何Java Web应用程序相同.嵌入式Tomcat会在更改时自动重新加载.

如评论中所述,默认配置将不包括所在的资源src\main\webapp.要解决此问题,您只需将以下内容添加到pom.xml <build>节点:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/target/classes/static</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/webapp</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

通过使用资源插件,您可以通过运行可执行JAR来进行本地开发:

java -jar target/.jar

在运行时,您可以使用Chrome开发工具或您喜欢的任何IDE来修改文件,而无需重新启动.但是,只要你运行你的身材,那么所产生的方案将包括在所有的文件src\main\webappsrc\main\resources\static.

  • 答:因为"src/main/webapp"通常不会通过标准构建配置(在Maven或Gradle中)打包到jar存档中. (2认同)

Dav*_*yer 13

文档说"所有现代IDE都允许重新加载静态资源,通常还有Java类更改的热交换"(https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/howto. html#howto-hotswapping).这是真的.Eclipse默认情况下或多或少都会这样做,而且我不是IntelliJ用户,但据我所知,您可以将其配置为自动构建.

  • 万分谢意!毕竟它在官方文档中。关于如何在IntelliJ上进行资源的热交换,Stackoverflow有一个很好的答案:http://stackoverflow.com/a/18492881/325324。 (2认同)

hyn*_*ess 8

我和一位同事也遇到过这个问题.我们在IntelliJ文档中找到了答案......

在主菜单上,选择"运行"| 重新加载更改的类

  • 在 IntelliJ 中的运行配置下,“On 'Update' action”和“On frame deactivation”都有一个选项。将这两个设置为“更新类和资源”。如果您要部署到 Tomcat,则存在这些选项 (2认同)