使用Java6的SpringBoot CRUDAPI 问题

使用Java6的SpringBoot CRUDAPI 问题,java,spring-boot,tomcat,tomcat7,java-6,Java,Spring Boot,Tomcat,Tomcat7,Java 6,我必须使用jdk1.6,SpringBoot实现CRUD 解决方案 我决定分两步解决这个问题: 使用一些教程编写CRUD(通常使用JDK1.8) 为JDK 1.6重新配置SpringBoot 我使用H2编写了简单的CRUD。它在JDK1.8中运行良好。我使用了tomcat9作为servlet容器 当我开始为jdk1.6重新配置我的项目时,问题出现了 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mav

我必须使用
jdk1.6
SpringBoot
实现CRUD

解决方案 我决定分两步解决这个问题:

  • 使用一些教程编写CRUD(通常使用
    JDK1.8
  • 为JDK 1.6重新配置SpringBoot
  • 我使用
    H2
    编写了简单的CRUD。它在JDK1.8中运行良好。我使用了
    tomcat9
    作为servlet容器

    当我开始为
    jdk1.6
    重新配置我的项目时,问题出现了

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>my.package</groupId>
    <artifactId>notificationservice</artifactId>
    <version>1.0.1</version>
    <packaging>war</packaging>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.4.2.RELEASE</version>
            <relativePath/>
        </parent>
    
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>javax.transaction</groupId>
                        <artifactId>javax.transaction-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.191</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.16</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
        <build>
            <defaultGoal>install</defaultGoal>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    
    我用了一篇文章。这些更改只影响到
    SpringBootApplication
    类和
    pom.xml
    ,它们现在的外观如下:

    SpringBootApplication.java:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.support.SpringBootServletInitializer;
    import my.package.controllers.NotificationController;
    import my.package.repositories.NotificationRepository;
    import my.package.services.NotificationService;
    
    @SpringBootApplication
    public class NotificationServiceApplication extends SpringBootServletInitializer {
    
        // As I understand - I have to manually put classes to ApplicationContext
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            application.sources(
                    NotificationServiceApplication.class
                    , NotificationService.class
                    , NotificationRepository.class
                    , NotificationController.class
            );
            return application;
        }
    }
    
    pom.xml:(我将嵌入式tomcat从应用程序中排除,并将其部署到
    Tomcat7
    ,因为它支持
    JDK1.6

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>my.package</groupId>
    <artifactId>notificationservice</artifactId>
    <version>1.0.1</version>
    <packaging>war</packaging>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.4.2.RELEASE</version>
            <relativePath/>
        </parent>
    
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>javax.transaction</groupId>
                        <artifactId>javax.transaction-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.191</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.16</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
        <build>
            <defaultGoal>install</defaultGoal>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    

    Tomcat 9需要java 8。是的,但是在为
    JDK 1.6
    重新配置项目之后,我开始使用
    Tomcat 7
    这可以帮助您理解问题:您仍然包括嵌入式Tomcat jdbc驱动程序(默认情况下)with属于较新的tomcat版本。@EiriniGraonidou我使用的是
    Intellij IDEA
    ,它会根据项目的
    JDK
    自动通过
    -target 6
    选项