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 命名轉換及映射的描述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章