Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring MVC和Boot刷新静态内容_Java_Spring Mvc_Spring Boot - Fatal编程技术网

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

Java 使用Spring MVC和Boot刷新静态内容,java,spring-mvc,spring-boot,Java,Spring Mvc,Spring Boot,我正在评估SpringMVC&Boot和AngularJs用于构建web应用程序。我遇到了这样一个问题:当我修改静态内容(html、js、css)时,每次都必须重新启动应用程序。我希望有办法解决这个问题,因为重新启动整个应用程序进行静态内容更改是没有效率的。我尝试过的所有其他web应用程序框架都允许动态更新静态内容文件(即使只是SpringMVC和普通的WAR应用程序) 我已经根据《使用Spring引导执行器构建RESTful Web服务》指南()设置了我的项目。基本上,它使用Spring引导和

我正在评估SpringMVC&Boot和AngularJs用于构建web应用程序。我遇到了这样一个问题:当我修改静态内容(html、js、css)时,每次都必须重新启动应用程序。我希望有办法解决这个问题,因为重新启动整个应用程序进行静态内容更改是没有效率的。我尝试过的所有其他web应用程序框架都允许动态更新静态内容文件(即使只是SpringMVC和普通的WAR应用程序)


我已经根据《使用Spring引导执行器构建RESTful Web服务》指南()设置了我的项目。基本上,它使用Spring引导和MVC控制器来创建REST服务。此外,我还使用了“使用AngularJS消费RESTful Web服务”指南()来构建AngularJS前端。它创建一个网页,显示来自REST服务的响应。我所做的唯一更改是对我的应用程序而不是“”进行请求。我的静态内容存储在“src/main/resources/public”文件夹中。除了不重新加载静态内容外,此设置正常工作。

啊。。。我也遇到了这个问题

不要将静态内容放在classpath
src/main/resources/public
文件夹中,而是将它们放在
src/main/webapp
中,就像其他Java web应用一样。嵌入式Tomcat将在它们更改时自动重新加载它们

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

<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>

maven资源插件
2.6
复制资源
验证
复制资源
${basedir}/target/classes/static
src/main/webapp
真的
通过使用resources插件,您可以通过运行可执行JAR进行本地开发:

java-jar target/.jar


在运行时,您可以使用chromedev工具或任何您喜欢的IDE来修改文件,而无需重新启动。但是,无论何时运行构建,生成的包都将包含
src\main\webapp
src\main\resources\static
中的所有文件,文档中说“所有现代IDE都允许重新加载静态资源,通常还允许热交换Java类更改”()。这是真的。Eclipse在默认情况下或多或少会这样做,我不是IntelliJ用户,但据我所知,您也可以将其配置为自动生成。

我和一位同事也遇到了这个问题。我们在…中找到了答案

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


对于eclipse,您必须激活Project->“自动构建”选项作为最低配置。

我最后使用的是。browsersync和grunt监视磁盘上的静态资源,并在编辑文件时更新浏览器。它充当一种代理。通过这种方式,您可以立即看到UI中的更改,而无需构建或重新启动任何内容

Grunt、browsersync、spring boot和angularjs是为您配置的,如果您使用我用来设置我的项目的


尽管这需要更多的工具,而不仅仅是一个IDE,而且要复杂得多,所以我不建议每个项目都使用它。

我也遇到过同样的问题,这里提出的解决方案似乎是合乎逻辑的,对我来说是可行的 在布雷夫: 1-ctrl+shift+A 2-搜索注册表 3-在打开的对话框中搜索“compiler.automake.allow.when.app.running” 检查一下

对原始问题的回顾

我遇到了这样一个问题:当我修改静态内容(html、js、css)时,每次都必须重新启动应用程序

我也遇到了同样的问题,最后通过添加

<configuration>
    <addResources>true</addResources>
</configuration>

真的
pom.xml
我被这个SpringBootDevTools的事情弄糊涂了,但它对我所做的一切都没有影响

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

你的道路很好。src/main/resources/static也很好。

我的解决方案(用Kotlin编写,但非常明显):

主要思想是您可以有条件地添加自己的资源处理程序。例如,如果设置了某些系统属性(resources.local.path),则使用属性中的值添加资源位置。然后在开发中使用一些合理的值设置此属性,如'-Dresources.local.path=file:/Users/andrey/Projects/gsp test/src/main/resources/static/'


不要忘记尾部斜杠。

spring boot devtools是而不是编辑的静态htm/js的“热部署”解决方案

我在intellij中配置了一个web方面,这样当我使用它编辑resources/static中的html/js文件时,intellij就会知道将更新的文件复制到./target,并且我在中启动的spring boot应用程序会自动显示该内容


@eigil METIOND
addResources
maven构建的配置。我在gradle版本中使用了
spring boot gradle插件
,我发现了这个
,以及Spring Boot文档。只需将此指令添加到build.gradle并运行gradle task
bootRun
,资源文件在保存时立即刷新。仅供参考。

Java版@viator的答案:

@Configuration
class WebMvcConfigurer extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/dist/*.js").addResourceLocations(
            "file:src/main/typescript/dist/"
        );
    }
}

我使用的是1.5.8.0版本

它会立即更新我的更改,特别是静态文件或jsp文件

如果您使用的是Maven。您需要将其添加到pom.xml中

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

这里有完整的示例和更多详细信息

您只需再添加一个依赖项即可

你是格拉德尔

在您的Pom.xml中


org.springfram
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
mvn clean spring-boot:run
compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '1.3.0.RELEASE'
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>1.3.0.RELEASE</version>
</dependency>
spring.resources.static-locations=file:///C:/myspringbootapp/src/main/webapp
tasks.bootRun {
    sourceResources(sourceSets.getAt(SourceSet.MAIN_SOURCE_SET_NAME))
}
    <addResources>true</addResources>
    </configuration>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>