SSM遷移到Springboot記錄


日志問題

Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/C:/Users/Administrator/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory

 

 

解決方案

去掉springboot中的日志組件

 1 <dependency>
 2     <groupId>org.springframework.boot</groupId>
 3     <artifactId>spring-boot-starter-web</artifactId>
 4     <exclusions>
 5         <exclusion>
 6             <groupId>org.springframework.boot</groupId>
 7             <artifactId>spring-boot-starter-logging</artifactId>
 8         </exclusion>
 9     </exclusions>
10 </dependency>
11 <dependency>
12     <groupId>org.springframework.boot</groupId>
13     <artifactId>spring-boot-starter</artifactId>
14     <exclusions>
15         <exclusion>
16             <groupId>org.springframework.boot</groupId>
17             <artifactId>spring-boot-starter-logging</artifactId>
18         </exclusion>
19     </exclusions>
20 </dependency>

thymeleaf問題

java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$ThymeleafDefaultConfiguration.templateEngine

 

解決辦法:

原來的SSM項目存在此組件的包,忘了去掉了,去掉即可。

 

啟動錯誤

A component required a bean of type 'com.bjcsxq.js.foundation.dao.BmZzjgDao' that could not be found

Consider defining a bean of type 'com.bjcsxq.js.foundation.dao.BmZzjgDao' in your configuration.

 

解決辦法:

1,檢查是否引用了mybatisOraclemysql)等必要的組件

2.查看項目啟動類是否配置了ComponentScanMapperScan

 

打包問題

項目可以正常運行,但是項目在打包的時候提示個下邊的錯誤,提示包不存在,但是在idea中點擊此類可以正常導航過去查看。

 

解決辦法:

1.此包為jdk中的包,在jdk的安裝目錄中可以找到

2.按照下圖方式,點擊+號 將找到的jar放到項目中

 

3.重新打包項目,正確打包出來

配置文件

首選按照springboot的方式將配置文件分為開發 測試 正式 的方式進行分開(dev  test prod

將以前的配置文件分別的寫入到里邊

但是出現一些問題

1 以前的配置文件的方式是使用properties文件進行配置,而springboot則打算只用yml配置文件,而且之前的SSM讀取properties使用的是工具類進行讀取,在文件名上沒有區分出來正式和測試,而且之前配置讀取都是在一個公用方法中,現在項目采用的辦法是在工具類上判斷出來是環境類型,然后根據不同環境進行讀取配置。

 

在啟動類的函數中增加VM option參數,第三行為環境配置

在工具類中讀取yml文件之前判斷運行參數的環境配置

 1 public class ResourceUtil {
 2 
 3     private static Map<String, String> allMap = new HashMap<>();
 4 
 5     static {
 6         List<String> params = ManagementFactory.getRuntimeMXBean().getInputArguments();
 7         String str = "";
 8         if (params.contains("-Dspring.profiles.active=dev")) {
 9             str = "/application-dev.yml";
10         } else if (params.contains("-Dspring.profiles.active=test")) {
11             str = "/application-test.yml";
12         } else if (params.contains("-Dspring.profiles.active=prod")) {
13             str = "/application-prod.yml";
14         } else {
15             try {
16                 throw new Exception("參數啟動異常");
17             } catch (Exception e) {
18                 e.printStackTrace();
19             }
20         }

 

2 測試和開發環境可以統一,但是因為正是環境需要部署到不用的地方,所以包括數據庫連接,自定義配置等等都無法統一,但所幸這寫配置幾乎都不會去改動,所以將無法統一的配置信息也都放入到啟動參數中,看上圖的配置截圖,注意參數配置 是-D開頭。

 

上傳文件

文件上傳之前的方式為存儲在項目目錄中,但是現在打算使用jar運行項目,所以需要使用其他的方式,正常的話需要有一個文件站點或者SSO方式為好,但是項目中並沒有此方式,而且最大的進行兼容之前的代碼,所以打算使用springboot中的虛擬路徑的方式,和IIS中的虛擬目錄功能差不多。

代碼:

 1 @Configuration
 2 public class WebMvcConfig extends WebMvcConfigurerAdapter {
 3 
 4     @Value("${js.web.path}")
 5     private String LocationPath;
 6 
 7     @Override
 8     public void addResourceHandlers(ResourceHandlerRegistry registry) {
 9         registry.addResourceHandler("upload/**").addResourceLocations("file:"+LocationPath+"upload\\");
10     }
11 }

 

第一個是訪問地址,第二個是映射到的真實硬盤路徑。

這樣我們訪問前邊的地址的時候就會映射到后邊的真實文件路徑中。

 

其他的問題,包括的文件讀取,定時任務配置,和項目中不兼容的地方等等,都是比較簡單的改動,不過這只是保證大部分的功能可以使用,其中很多的問題還需要經過測試流程才可以進行正式使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM