1. 程式人生 > 其它 >Springboot整合外部tomcat,持久層

Springboot整合外部tomcat,持久層

1:外部tomcat資源整合

Spring Boot應用預設是以jar包方式執行的,Springboot預設有內建的tomcat,在啟動的時候會自動的將專案釋出,這樣各有利弊。
優點:簡單,便攜
缺點:不支援jsp, 定製優化比較麻煩
Springboot支援通過簡單的配置,可以將Spring Boot應用打成war包佈署到外部Tomcat環境下;

1、通過idea工具建立springboot應用,注意將打包方式修改為war包;

    發現建立好的專案中多了一個類:ServletInitializer extends SpringBootServletInitializer,  必須要繼承SpringBootServletInitializer,固定的格式。

2、開啟pom檔案檢視打包方式是否為war以及tomcat的scope是否是provided;

  Pom檔案的打包方式必須是war, 如果建立的時候沒有注意打成jar 也沒有關係,在這裡修改就可以了
 Tomcat的<scope>provided</scope> 是固定的,加上它,打包時不會把內建的tomcat打進去
provided,編譯的時候會用到,但不會被打入最後的jar包
例如想把spring boot專案以war包的形式放在tomcat中執行,首先得加入如下依賴
 注意:spring-boot專案使用的jdk版本要和tomcat的jdk版本一致(都是1.8)
 
<groupId>com.sky</groupId>
<artifactId>boot04web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependency>
<groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>
</dependency>

1、在main下建立缺少的webapp, WEB-INF, web.xml檔案

  使用工具建立的目錄結構不包含傳統web的結構,此時需要我們手動的新增進去,在main下新建webapp目錄--
  也可以使用工具中的專案結構的快捷方式建立,如下圖:
  注意:點加號會自動的建立web.xml, 看著下面的地址寫就可以了,新增專案後的src,main,webapp  來指定web.xml的位置, 同時web.xml的內容也會自動生成。

 

 

 

 

4:將專案釋出到伺服器上

 之前我們的idea工具已經整合了tomcat,此時我們只需要將springboot的專案釋出上去即可,
 使用的具體步驟和之前釋出web專案的步驟是一致的,

  

 

 

 

 

5:在webapp下建立index.jsp和後臺程式進行測試

 注意:
1、使用了jsp我們一般是放在webapp或者WEB-INF下,可以通過配置進行自定義:
spring.mvc.view.prefix=/WEB-INF/
  
spring.mvc.view.suffix=.jsp
2、配置了試圖解析器之後,只要返回字串就會尋找檢視物件,可以使用久違的EL了。
3、在啟動的時候就不能使用springboot的啟動器啟動了,這樣會報錯,配置了外部的tomcat只能啟動外部的了。
            Jar包:執行springboot的主程式,啟動IOC 容器,建立嵌入式的tomcat
            War包:啟動伺服器,使用伺服器來載入springboot應用,啟動IOC容器
 

2:整合持久層

Mybatis是一個優秀的持久層框架,在現在的開發中有著廣泛的運用,實際開發中springboot常常和mybatis一起配合完成一些高階的操作;
下面為大家準備了2個版本整合,註解版簡單,配置檔案明確,做到了SQL與程式碼的分離,更方便;
準備環境:
1:使用嚮導新建一個springboot的專案,選擇web, mysql,jdbc, mybtais;
2:配置資料來源spring.datasource.---; 根據自己的實際情況進行配置;
3:編寫資料庫和表,新建javabean; --- 以員工和部門為例
環境準備好之後就開始準備寫程式碼進行測試。註解版操作部門相關的功能,配置檔案操作員工相關的操作;

 

 

1:註解版

使用註解版操作部門相關的功能
1:新建一個部門的controller 和一個部門的Mapper介面;
2:在部門介面新增CRUD得方法,並且在方法上使用註解完成sql語句的編寫,注意介面上的@Mapper註解不要忘記;
3:編寫部門的controller,注入mapper , 並且呼叫其中的方法;
4:釋出專案,發起請求進行測試;
注意:
1:資料庫驅動的版本;mysql5以下使用原始版本,mysql6以上的版本是不一致的。
2:資料庫和系統時差的問題,出現亂碼;如果使用高版本的一定要在url後面新增serverTimezone=UTC,也可以在新增一些編碼相關內容。
3:因為java程式碼和sql語句在一起,可維護性差,對於複雜型別的sql支援不好,在開發的時候使用的並不多。
4:在控制檯列印sql語句配置:
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
5:如果返回的結果需要手動對映的話,需要使用@Results註解結合@Result,語法為:
    @Results({
            @Result(property = "id", column = "id"),
            @Result(property = "username", column = "uname"),
            @Result(property = "address", column = "addr")
    })

2:配置檔案版

1:新建員工的controller和介面Mapper;
2: 在介面中定義關於員工的CRUD的方法;
3:在resources資料夾中新建一個mybatis-config.xml檔案和 mapper的資料夾,
mybatis-config.xml是mybatis的配置檔案,mapper資料夾專門存放mapper.xml,在內部新建一個EmpMapper.xml ; 
4: 在mapper.xml檔案中完成CRUD的sql編寫,並且指定namespace ;
5:在總配置檔案中使用mybatis.config-location和mapper-locations指定具體檔案的位置,這樣檔案才能生效;
   小技巧:出現location一般都要是有classpath, 在springboot中classpath表示的是resources資料夾。
6:啟動測試。
注意:
 使用外部的tomcat不需要介面的掃描包,如果使用springboot內建的伺服器的話則必須要新增這一行,所以要求必須要加介面的掃描包:
在啟動類上必須要加一個介面的掃描包:@MapperScan("com.sky.mapper")