SSM框架的整合

来源:https://www.cnblogs.com/super-education/archive/2019/06/22/11064042.html
-Advertisement-
Play Games

本文主要是詳細介紹如何利用maven對SSM框架整合的思路及其詳解 ...


1.1 Maven整合SSM框架簡介

1.1.1 SSM框架整合概述

  • 利用Maven整合SSM框架的思路

  1.在對每個框架整合之前都需要先在Maven的pom.xml配置文件中導入相關的依賴

  2.導入完依賴接著再在pom.xml配置文件中導入相關插件

  3.整合各個框架對應的配置文件,把與創建對象相關交給Spring即整合到spring.xml中

  4.重新整個各個框架的核心配置文件

  • 註意點:

  1.每整合完一個框架都要做相應的測試,防止一次性整合完,出現錯誤難以排查

  2.本文以創建一個web項目為例

  3.本文用的是eclipse的neon版本工具進行整合

  4.配置文件放在src/main/resources目錄下

1.2 Maven整合SSM框架整合詳解

1.2.1 在eclipse中創建一個工程

  • 創建工程詳解

  1.創建一個Maven工程,選擇骨架webapp,填寫好坐標三要素

  

    

  2.因為webapp骨架缺少src/main/java文件結構,所以需要添加該文件結構

  3.如果創建的是普通java骨架,其會缺少src/main/resource文件結構

  4.創建完了,項目目錄結構如下:

  

  5.在maven的pom.xml中添加所需的插件,如source生成插件,編譯插件,Tomcat插件

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" 
 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 4   <modelVersion>4.0.0</modelVersion>
 5   <groupId>cn.baidu</groupId>
 6   <artifactId>UER-ORDER-SSM</artifactId>
 7   <packaging>war</packaging>
 8   <version>0.0.1-SNAPSHOT</version>
 9   <name>UER-ORDER-SSM Maven Webapp</name>
10   <url>http://maven.apache.org</url>
11   <dependencies>
12     <dependency>
13       <groupId>junit</groupId>
14       <artifactId>junit</artifactId>
15       <version>3.8.1</version>
16       <scope>test</scope>
17     </dependency>
18   </dependencies>
19   <build>
20     <finalName>UER-ORDER-SSM</finalName>
21     <!-- source插件 -->
22     <plugins>
23         <plugin>
24             <groupId>org.apache.maven.plugins</groupId>
25             <artifactId>maven-compiler-plugin</artifactId>
26             <configuration>
27                 <source>1.8</source>
28                 <target>1.8</target>
29                 <encoding>UTF-8</encoding>
30             </configuration>
31         </plugin>
32         <!-- Tomcat插件整合SpringMVC的時候補充 -->
33     </plugins>
34   </build>
35 </project>

 

  6.註意:

    • maven插件資源,將當前maven工程進行compile編譯時載入,完成java1.8,1.7的使用,這裡統一使用1.8的版本
    • 往下整合關於pom.xml文件的配置內容,本人只給出需要添加的部分,讀者往上面代碼中添加即可

1.2.2 將Spring框架整合到Maven中

  • 整體思路

  1.先在pom.xml文件中導入Spring框架所依賴的資源

  2.然後編寫spring的核心配置文件,spring.xml,該配置文件進行包掃描,打開註解配置

  3.往下的整合只要跟創建對象,對象管理相關的配置都在spring.xml文件中配置

  4.編寫測試代碼,測試整合是否成功

  • 先在Pom.xml文件中導入Spring框架的依賴資源

  1.導入spring-context依賴資源,但是依賴具有傳遞性,導入該資源可能也會引入其他依賴資源 

1 <dependency>
2    <groupId>org.springframework</groupId>
3    <artifactId>spring-context</artifactId>
4    <version>4.3.7.RELEASE</version>
5 </dependency>
  • 編寫Spring的核心配置文件spring.xml

  1.將spring.xml配置文件放到src/main/resources目錄下

  2.在src目錄下的資源在編譯的時候都會將位元組碼載入到target/classes中

  3.在配置文件中會經常看見"classpath:xxx.xml"路徑來讀取文件,而classpath路徑是什麼位置?

  4.在maven項目中classpath路徑預設src/main/resource路徑

  5.往後跟創建對象相關的配置需要放在spring的核心配置文件中,用於創建bean對象

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4     xmlns:aop="http://www.springframework.org/schema/aop"
 5     xmlns:tx="http://www.springframework.org/schema/tx"
 6     xmlns:p="http://www.springframework.org/schema/p"
 7     xmlns:util="http://www.springframework.org/schema/util" 
 8     xmlns:context="http://www.springframework.org/schema/context"
 9     xmlns:mvc="http://www.springframework.org/schema/mvc"
10     xsi:schemaLocation="
11         http://www.springframework.org/schema/beans
12         http://www.springframework.org/schema/beans/spring-beans.xsd
13         http://www.springframework.org/schema/aop 
14         http://www.springframework.org/schema/aop/spring-aop.xsd
15         http://www.springframework.org/schema/tx 
16         http://www.springframework.org/schema/tx/spring-tx.xsd
17         http://www.springframework.org/schema/util 
18         http://www.springframework.org/schema/util/spring-util.xsd
19         http://www.springframework.org/schema/context
20         http://www.springframework.org/schema/context/spring-context.xsd
21         http://www.springframework.org/schema/mvc
22         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
23         
24         <!-- 開啟包掃描 -->
25         <context:component-scan base-package="cn.baidu"></context:component-scan>
26         <!-- 開啟註解DI -->
27         <context:annotation-config></context:annotation-config>
28     
29  </beans>

 

  • 編寫測試代碼,測試maven整合spring框架是否成功

  1.依據三層架構建好目錄結構

  

  2.編寫控制層測試程式

 1 package cn.baidu.controller;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Controller;
 5 
 6 import cn.baidu.service.HelloService;
 7 
 8 @Controller
 9 public class HelloController {
10     
11 //    註入service層對象
12     @Autowired
13     private HelloService helloService;
14     
15     public String sayHi(String name){
16 //        調用對應service層的方法
17         return helloService.sayHi(name);
18     }
19 
20 }

  3.編寫業務邏輯層的介面

1 package cn.baidu.service;
2 
3 //service層的介面
4 public interface HelloService {
5 
6     public String sayHi(String name);
7 
8 }

  4.編寫業務層的實現類

 1 package cn.baidu.service;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Service;
 5 
 6 import cn.baidu.mapper.HelloMapper;
 7 
 8 @Service
 9 public class HelloServiceImp implements HelloService{
10     
11 //    註入持久層對象
12     @Autowired
13     private HelloMapper helloMapper;
14     @Override
15     public String sayHi(String name) {
16 //        調用持久層方法
17         return helloMapper.sayHi(name);
18     }
19 
20 }

  5.編寫持久層介面

1 package cn.baidu.mapper;
2 
3 public interface HelloMapper {
4 
5     public String sayHi(String name);
6 
7 }

  6.編寫持久層實現類

 1 package cn.baidu.mapper;
 2 
 3 import org.springframework.stereotype.Repository;
 4 
 5 @Repository
 6 public class HelloMapperImp implements HelloMapper{
 7 
 8     @Override
 9     public String sayHi(String name) {
10         return "Hi,歡迎測試Spring框架的搭建情況";
11     }
12     
13 }

  7.編寫測試類,測試整合情況

 1 package cn.baidu.test;
 2 
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 import cn.baidu.controller.HelloController;
 8 
 9 public class TestHello {
10     
11     @Test
12     public void test(){
13         
14 //        初始化Spring容器
15         ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
16 //        獲取控制層對象
17         HelloController helloController = context.getBean(HelloController.class);
18 //        調用控制層方法
19         String str = helloController.sayHi("譚小傑");
20         System.out.println(str);
21         
22     }
23 
24 }

  7.出現如下結果說明測試成功

  

1.2.3 將Mybatis框架整合至Maven中

  • 整合思路

  1.Mybatis框架主要有兩個配置文件,一個是mybatis配置文件和xxxMapper.xml(核心)配置文件

  2.映射配置文件中主要配置數據源,用於創建與資料庫連接的對象和配置核心配置文件的映射

  3.有以上兩個文件的配置內容可知,數據源的配置移到spring.xml配置文件中

  4.MyBatis框架需要創建sqlSession對象執行sql語句,獲取執行結果

  5.所以在spring.xml文件中配置sqlSession的bean,用於創建Session對象

  6.MyBatis需要mapper介面,需要在spring.xml配置對應的bean利用動態代理創建其介面的實現類

  7.編寫mybatis-config.xml配置文件,裡面添加一些mybatis的功能

  8.編寫xxxMapper.xml配置文件,定義好namespace和定義所需的sql語句

  • 在pom.xml配置文件中導入Mybatis框架所需的依賴資源

  1.配置數據源需要連接池依賴,jdbc依賴和資料庫類型依賴

  2.本文用的連接池是阿裡巴巴的druid,資料庫用的是MySQL

 1 <!-- 連接池依賴 -->
 2 <dependency>
 3     <groupId>com.alibaba</groupId>
 4     <artifactId>druid</artifactId>
 5     <version>1.0.14</version>
 6 </dependency>
 7 <!-- jdbc依賴 -->
 8 <dependency>
 9     <groupId>org.springframework</groupId>
10     <artifactId>spring-jdbc</artifactId>
11     <version>4.3.7.RELEASE</version>
12 </dependency>
13 <!-- mysql依賴 -->
14 <dependency>
15     <groupId>mysql</groupId>
16     <artifactId>mysql-connector-java</artifactId>
17     <version>5.0.8</version>
18 </dependency>
19 <!-- mybatis依賴資源 -->
20 <dependency>
21     <groupId>org.mybatis</groupId>
22     <artifactId>mybatis</artifactId>
23     <version>3.4.5</version>
24 </dependency>
25 <!-- mybatis-spring依賴資源 -->
26 <dependency>
27     <groupId>org.mybatis</groupId>
28     <artifactId>mybatis-spring</artifactId>
29     <version>1.3.1</version>
30 </dependency>

 

  • 在spring.xml中配置對應的bean

  1.配置數據源的bean標簽,該標簽主要數用於創建連接資料庫對象

1 <!-- 配置數據源 -->
2 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
3     <!-- 4個屬性,資料庫驅動,URL,用戶名和密碼 -->
4       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
5        <property name="url" value="jdbc:mysql:///mssm"/>
6        <property name="username" value="root"/>
7        <property name="password" value="root"/>
8 </bean>

  2.配置sqlSession的bean標簽,該標簽用於創建session對象,用於執行sql語句和獲取執行結果

 1 <!-- 配置sqlSession,動態代理實現持久層sqlSession介面實現的對象 -->
 2 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
 3     <!-- 綁定數據源即獲取connection對象 -->
 4     <property name="dataSource" ref="dataSource"/>
 5     <!-- 載入mybatis的獨立配置文件 -->
 6     <property name="configLocation" value="classpath:mybatis-config.xml"/>
 7     <!-- 掃描映射xxxMapper.xml映射文件 -->
 8     <property name="mapperLocations"value="classpath:mapper/*.xml"/>
 9 </bean>
10 <!-- 配置mapper介面的掃描配置用於創建mapper介面的實現類 -->
11 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
12      <property name="basePackage" value="cn.baidu.mapper"/>
13 </bean>
  • 編寫mybatis-config.xml配置文件

  1.在src/main/resources目錄下編寫mybatis-config.xml配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!-- 打開駝峰命名設置,用於封裝持久層數據對象的內容-->
 7     <settings>
 8         <setting name="mapUnderscoreToCamelCase" value="true"/>
 9     </settings>
10     
11 </configuration>
  • 編寫xxxMapper.xml配置文件

  1.在src/main/resources/mapper目錄下配置對應的xxxMapper.xml文件,將sql語句添加其中

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <mapper namespace="cn.baidu.mapper.StudentMapper">
5 </mapper> 
  • 編寫測試代碼,測試Mybatis整合是否成功

  1.在連接的資料庫中建立mssm資料庫,創建student表格,其有如下欄位和數據

1 //創建表
2 create table student(id varchar(225),name varchar(225));
3 //添加數據
4 insert into student values('a','王重陽'),('b','歐陽鋒'),('c','黃藥師');

  2.編寫一個用於封裝數據的domain類

 1 package cn.baidu.domain;
 2 
 3 public class Student {
 4     
 5 //    定義屬性
 6     private String id;
 7     private String name;
 8 //    定義構造方法
 9     public Student(){}
10     public Student(String id, String name) {
11         super();
12         this.id = id;
13         this.name = name;
14     }
15 //    定義getter和sett方法
16     public String getId() {
17         return id;
18     }
19     public void setId(String id) {
20         this.id = id;
21     }
22     public String getName() {
23         return name;
24     }
25     public void setName(String name) {
26         this.name = name;
27     }
28     @Override
29     public String toString() {
30         return "Student [id=" + id + ", name=" + name + "]";
31     }
32     
33 }

  3.編寫控制層代碼

 1 package cn.baidu.controller;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Controller;
 5 
 6 import cn.baidu.domain.Student;
 7 import cn.baidu.service.StudentService;
 8 
 9 @Controller
10 public class StudentController {
11     
12     @Autowired
13     private StudentService studentService;
14     public Student queryStudentById(String id){
15         return studentService.queryStudentById(id);
16     }
17 
18 }

  4.編寫業務層介面

1 package cn.baidu.service;
2 
3 import cn.baidu.domain.Student;
4 
5 public interface StudentMapper {
6     
7     public Student queryOne(String id);
8 }

  5.編寫業務層的實現類

 1 package cn.baidu.service;
 2 

              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • css 推薦的樣式編寫順序: 1. Positioning:定位 2. Box model:盒子模型、大小等 3. Typographic:文字系列、排印等 4. Visual:可視化、背景等 5. Misc:其它混雜模式 居中 垂直居中,設置line height 水平方向 text align ...
  • [2019.06.22 學習筆記3] 1.DTD文檔模型是DOCTYPE文檔聲明,是Doucument Type Definition的英文縮寫,是文檔類型定義 2.製作一個標準的頁面,聲明一個正確的DOCTPYE,HTML裡面的標識和CSS才能正常生效. 3.不是HTML標簽,不區分大小寫,沒有結 ...
  • ...
  • [2019.06.22 學習筆記2] 1.超文本標記語言 ...
  • [2019.06.22 學習筆記1] 1.<img>圖片標簽,自閉合標簽 2.必要屬性src,src="圖片地址" 3.重要屬性title,滑鼠經過時候提示的文字 4.重要屬性alt,圖片未正常顯示的提示文字 5.實例 ...
  • Bootstrap初始化過程 netty的客戶端引導類是Bootstrap,我們看一下spark的rpc中客戶端部分對Bootstrap的初始化過程 TransportClientFactory.createClient(InetSocketAddress address) 只需要貼出Bootstr ...
  • [TOC] Unit4 作業分析 作業 4 1 UML類圖解析器 UmlInteraction 1. 架構設計 1)度量分析 2)結構分析 3)演算法分析 作業 4 2 擴展解析器(UML順序圖、UML狀態圖解析,基本規則驗證) 1. 架構設計 1)度量分析 2)結構分析 3)演算法分析 classMo ...
  • ​一、 前言 從過去的OA、CRM、ERP等單機即可滿足要求的系統到現代互聯網時代各大公司的分散式、微服務平臺,互聯網架構正在經歷著巨大的變革,技術也在不斷的更新迭代,這也意味著眾多軟體開發者們的壓力和挑戰正在不斷的加大,這種新技術更新的速度甚至讓我們望而卻步,而我們需要做的恐怕不僅僅是學習那麼簡單 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...