spring Boot (五) 启动problem

基本配置完工之后,剩下的就是启动了,启动的过程中,主要遇到两个问题:
问题一:java.lang.NoClassDefFoundError: javax/servlet/ServletContext

2016-06-17 11:04:14.216 ERROR 4684 --- [           main] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoClassDefFoundError: javax/servlet/ServletContext
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
    at java.lang.Class.getDeclaredMethods(Class.java:1855)

其实就是忘记在web层添加层级依赖,光记得在父类假如了对javax.servlet的Maven依赖,web层启动的时候找不到,所以则报错了。

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>

在web层pom文件中加上即可。
问题二:@Override is not allowed when implementing interface method
override
pom文件中配置maven-compiler-plugin(可以避免每个人都要按照解决方案一设置一次)
问题三:启动依赖冲突,重复
默认情况下,Spring Boot使用Tomcat来作为内嵌的Servlet容器。但是SpringBoot启动,我们优先选择spring-boot-starter-undertow Maven依赖来代替Tomcat,进而提升性能,这种情况下,我们则必须把tomcat从依赖中移除:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <!--springBoot中移除tomcat-->
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
                <version>${spring.boot.version}</version>
            </dependency>
            <!--加载spring-boot-starter-undertow-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-undertow</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>

至于性能提高多少,我们则可以专门进行一下测试。通过Java VisualVM工具则可以明显的观察到:
tomcat
undertow
看两者的对比,我只是简单的对内存和线程进行了一下对比,课件堆的使用情况以及线程数,undertow启动都是占优势的,我仅仅是简单的启动SpringBoot,在执行的同一时间截图观察的情况。在平常的复杂业务启动过程中,我相信undertow启动的优势会更大。
问题四:beetlSQL实践需要注意命名转换的问题,详情下一篇对beetlSQL 命名转换及映射的描述。

猜你喜欢

转载自blog.csdn.net/huo065000/article/details/80438253