Springboot整合外部tomcat,持久層
阿新 • • 發佈:2022-03-15
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")