【问题标题】:trying to migrate from spring mvc to spring boot试图从 spring mvc 迁移到 spring boot
【发布时间】:2019-05-24 13:44:25
【问题描述】:

我有一个 spring mvc 项目,想转换成 spring boot。所以我改变了项目:

POM 文件:

    <modelVersion>4.0.0</modelVersion>
    <groupId>spring-boot</groupId>
    <artifactId>spring-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <start-class>com.ApplicationStartup</start-class>
    </properties>    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                </exclusion>
            </exclusions>
        </dependency>    
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.4.0</version>
        </dependency>    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>    
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>    
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>    
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <version>1.49</version>
            <optional>true</optional>
        </dependency>    
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-jdk15on</artifactId>
            <version>1.49</version>
            <optional>true</optional>
        </dependency>    
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>    
        <dependency>
            <groupId>org.apache.santuario</groupId>
            <artifactId>xmlsec</artifactId>
            <version>1.5.1</version>
            <optional>true</optional>
        </dependency>    
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
        </dependency>    
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.1-901.jdbc4</version>
        </dependency>    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

启动(主)类:

只有这些改变,我已经完成了。使用此 StartupApplication 正在启动,但应用程序未打开。我想打开一个jsp作为欢迎文件。

项目目录结构:

那么如何根据我的代码在spring boot中调用jsp或根据我的项目结构将spring mvc迁移到boot的步骤。提前致谢。 使用此代码,我得到如下输出:

【问题讨论】:

  • 我建议将文件夹结构更改为“spring boot 推荐”结构
  • Using this StartupApplication is starting but application is not open 是什么意思?打开浏览器并输入 URL 怎么样?
  • 运行后只显示如上的输出但浏览器没有打开
  • spring.mvc.view.prefix: /WEB-INF/jsp/ and spring.mvc.view.suffix: .jsp 你有没有在你的应用程序yaml/属性文件中给出这些属性?

标签: java spring spring-mvc spring-boot


【解决方案1】:

Spring Boot:开发中Web ApplicationsFeatures

当您将项目从 Spring MVC Applcaiotn 转换为 Spring BOOT Appication 时,
您需要按照以下步骤操作。

  • 首先,我们需要将war 文件部署到服务器中,以便为应用程序提供服务。 Spring Boot 带有 Embed Tomcat 服务器。所以,需要创建一个war文件来部署。它会自动使用嵌入服务器并为应用程序提供服务器。
  • 第二个好处是不用XML configuration只用Java Configuration。所以,不需要使用web.xml文件我们可以消除它。

对于欢迎页面的 « 它首先在配置的 static content 位置中查找 index.html 文件。如果没有找到,它会寻找一个索引模板。 ResourceUrlEncodingFilter 是为 ThymeleafFreeMarker 自动配置的。

对于 JSP,您需要将 jsp 模板配置为 InternalResourceViewResolver
这个ViewResolver 允许我们将prefixsuffix 等属性设置为视图名称以生成最终的视图页面URL。 src/main/resources/templates | src/main/webapp/WEB-INF

@Configuration
public class JspViewResolverConfig {
    @Bean
    public ViewResolver jspViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/pages/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setContentType("text/html");

        return viewResolver;
    }
}

【讨论】:

    【解决方案2】:

    -这不是您问题的完整/准确答案-

    我已经为不同的项目完成了从 spring 到 spring-boot 的迁移。根据我的经验,我建议创建一个简单的 spring-boot 应用程序,然后将您需要的东西移动到新创建的应用程序中。这样它将是干净的代码,没有任何不需要的文件/依赖项。

    例如,您关注的文件夹结构是:src/com/..class files here,而 src/main/java 似乎是空的。在 Spring Boot 中,您的类文件将仅在 src/main/java 中。每个目录都有默认路径,如resources、静态文件、propertiestest 等。

    您可以在这里创建一个简单的 spring-boot 应用程序(您可以下载 zip 文件)https://start.spring.io/。请不要忘记在提供的文本框中添加所需的依赖项。然后使用他们提供的示例 blah blah 成功运行它。

    如果你直接从旧项目创建spring-boot,会有很多不需要的文件和依赖项,最后你无法确定它是否真的需要。默认结构也会有所不同,是的,维护将是一项非常繁琐的任务。此外,继续前进,如果您使用同一个项目,您将继续收到类似这样的其他错误/问题(您的 jsp 问题)。

    起初,您可能会觉得这是一项乏味的任务(我上面提到的方法),但是一旦您开始使用它就会变得容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 2015-12-20
      • 2019-01-07
      • 2020-11-18
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多