Spring Boot很火,因而也這麼試試,代碼在git的springboot分支。javascript
用了Spring Boot,去掉了不少maven依賴的引入。在idea開發,用內置的tomcat,這個依賴會引起servlet找不到的異常,註釋掉就能夠解決。html
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!-- <scope>provided</scope>--> </dependency>
在改造時折騰了幾天,就是關於使用默認的jsp,和改爲其餘模板的問題。Spring Boot不推薦用jsp,參考FreeMarker、Thymeleaf、Enjoy 模板引擎性能測試,決定用jfinal的enjoy模板。實際上也不多用到模板的模塊,由於前端代碼大部分是用js完成的。前端
@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/index"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); super.addViewControllers(registry); }
過程大概是這樣,首先原來的管理後臺,默認首頁是在web.xml配置的,在繼承WebMvcConfigurerAdapter以後,能夠設置首頁,這裏的forward,也能夠轉發到index.html,可是,網頁裏面用到了${ctx}的變量,直接訪問jsp會被Spring Boot跳轉到error頁面,而訪問html頁面,這個變量沒有解析,致使頁面的樣式路徑404。最後幡然醒悟,直接訪問頁面是不會通過ViewResolver處理頁面的變量,也就達不到想要的結果。因而訪問頁面的操做都由Spring作跳轉,不是直接訪問靜態頁面的url。java
而在用#(ctx)這個變量的時候,一直想要自動獲取,試了好久也沒弄出來,方法太麻煩,想到application.properties有個地方是配置服務根路徑的,直接配置了server.context-path,注入配置文件中的配置到contextPath,因而 jfr.addSharedObject("ctx", contextPath); 就完成設置,也不用去作其餘複雜操做。node
在頁面有個獲取js文件時間戳的方法,寫到Function的靜態方法,以後經過enjoy設置SharedMethod,頁面就能夠直接用。這個也沒有太好的方法去獲取靜態文件的路徑,直接按照約定寫死static目錄。git
//Java中設置 jfr.addSharedMethod(Function.class); //js中使用 <script type="text/javascript" src="#(ctx)/js/frame/main.js?v=#(getTime('js/frame/main.js'))"></script>
頁面還有個地方須要注意的,就是頁面用了layui的模板,這裏和enjoy有衝突,加個換行稍微改一下就行。web
<script type="text/html" id="nodeTpl"> {{# if(d.nodetype == '0') { return '父節點'; } else { return '子節點'; } }} </script> // 改成 --> <script type="text/html" id="nodeTpl"> {{# if(d.nodetype == '0') { return '父節點'; } else { return '子節點'; } }} </script>
接下來講說mybatis遇到的問題,配置裏直接配置,看到有mybatis.type-aliases-package,mybatis.mapper-locations這兩個能夠配置的參數,想起之前這兩個配置是直接寫在SqlMapConfig.xml的,此次就一塊兒換掉,配置文件只留下setting的內容。正則表達式
sqlSessionFactory.setTypeAliasesPackage(aliasPackage); try { sqlSessionFactory.setMapperLocations( new PathMatchingResourcePatternResolver().getResources(mapperLocations)); } catch (IOException e) { e.printStackTrace(); }
這裏設置別名的時候,遇到找不到別名的問題。1.mybatis默認是用類的短名小寫做爲別名的key,因此在xml用到類的改爲小寫。2.typeAliasesPackage是設置別名的基礎包名,會掃描指定包及子包的類,自動加載到別名的map中,這裏要寫具體的包名,不能寫正則表達式。p.s.就是由於寫了正則表達式致使找不到的,能夠考慮把全部用到的類按照業務歸類到子包中。spring
以上就是此次改造的總結,完。sql