MVC與三層框架|Spring的基礎應用
學習目標:
花10天時間學習SSM框架能學多少?
學習內容:
提示:這裡可以新增要學的內容
1.瞭解MVC與三層架構
2.Spring的基本應用
學習時間:
週日 :上午8點-中午12 點
下午 3 點-下午 6 點
學習產出:
1.1 什麼是MVC ?
MVC全稱(Model View Controller)模型-檢視-控制器
MVC是一個設計模式,這個模式是讓應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心部件:模型、檢視、控制器。它們各自處理自己的任務。
瞭解完MVC的工作原理,有沒有小夥伴和我感覺一樣,這裡的控制器不就有的點像我們之前學過的JAVAWEB中的Servlet嗎?沒錯,其實他們是有聯絡滴。
1.2三層架構
What——什麼是三層架構?
如下圖所示:三層分別是UI(表示層)、(BLL業務邏輯層)與DAL(資料訪問層)
Spring框架主要作用就是用於物件的管理;
Mybatis框架用於將資料庫|表 《-》java物件
Springmvc 相當於servlet
1.3 MVC與三層架構的聯絡
如圖所示即為所求啊(皮一下很開心)?
二、Spring的基本應用
在學習Spring基礎內容時我發現Spring是有很多優點的,請看下圖
2.1理解Spring
在理解Spring之前,我們要先理解幾個概念
第一個概念?
IOC(Inverse of Control 控制反轉):講人話就是我想讓原來是人來做的活交給了機器,工作物件反轉了,而這個工作具體來說就是生成物件。
注意:控制反轉是一種設計原則,”依賴注入”與“依賴查詢”是體現這個設計原則的具體方法。
還不能理解的同學看看下面這個小栗子?
Class A中用到了Class B的物件b,一般情況下,需要在A的程式碼中顯式的new一個B的物件。但是採用依賴注入技術之後,A的程式碼只需要定義一個私有的B物件,不需要直接new來獲得這個物件,而是通過相關的容器控制程式來將B物件在外部new出來並注入到A類裡的引用中。而具體獲取的方法、物件被獲取時的狀態由配置檔案(如XML)來指定。
第二個概念?
AOP(Aspect Oriented Programming 面向切面程式設計):
官方介紹:AOP能夠將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任,例如事務處理、日誌管理、許可權控制等,封裝起來,便於減少系統的重複程式碼,降低模組間的耦合度,並有利於未來的可操作性和可維護性。
個人理解叫做三文治程式設計設計,當我們要製作一個三文治時,我們分別準備麵包和火腿,面向切面程式設計思想是這種感覺。在程式設計時我把與業務邏輯無關的部分理解成三文治裡面的“麵包”,與業務邏輯有關的是三文治是的“火腿與雞蛋”。
最後一個概念?
JavaBean:JavaBean 是一種JAVA語言寫成的可重用元件。為寫成JavaBean,類必須是具體的和公共的,並且具有無引數的構造器。
簡單來說就是把你專案裡面需要重複使用的地方,我只寫一次,然後呼叫即可。
有了前面的基礎知識,那麼瞭解Spring就不成問題了。
What——那到底什麼是Spring呢?
Spring是分層的輕量級開源框架,以IoC(Inverse of Control 控制反轉)和AOP(Aspect Oriented Programming 面向切面程式設計)為核心,使用基本的JavaBean來完成以前只可能由EJB完成的工作,取代了EJB的臃腫、低效的開發模式。
注:EJB是的Enterprise Java Beans技術的簡稱
Spring對每三層都提供的技術支援,如下圖:
2.2 Spring體系架構圖
2.2實操部分
瞭解完這些我們話不多說,開始程式設計,還有些知識點會穿插著程式碼,優雅的介紹。
再開始程式設計之前我們還學要準備一下jar包,來支援Spring的運作。
百度網盤連結:https://pan.baidu.com/s/1FFQs1DC6iFKj72CVDOS9aw
提取碼:guk6
jar包的指定位置示例,如下圖所示:
2.3
準備好了這些我們下面開始一個小練習,做一個實驗。
實驗目的:輸出userDao say hello World !
實驗條件:需要初始化Spring容器,並載入配置檔案,然後通過Spring容器獲取userDao例項(即Java物件),最後呼叫例項中的say()方法,輸出文字。
1、 在Eclipse中,建立一個名為chapter01的Web專案,將Spring的4個基礎包以及commons-logging的JAR包複製到lib目錄中,併發布到類路徑下。
2、在src目錄下,建立一個com.itheima.ioc包,並在包中建立介面UserDao,然後在介面中定義一個say()方法。
package com.itheima.ioc;
public interface UserDao {
public void say();
}
3、在com.itheima.ioc包下,建立UserDao介面的實現類UserDaoImpl,該類需要實現介面中的say()方法,並在方法中編寫一條輸出語句。
package com.itheima.ioc;
public class UserDaoImpl implements UserDao {
public void say() {
System.out.println("userDao say hello World !");
}
}
4、核心步驟:在src目錄下,建立Spring的配置檔案applicationContext.xml,並在配置檔案中建立一個id為userDao的Bean。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<bean id="userDao" class="com.itheima.ioc.UserDaoImpl" />
</beans>
5、測試
在com.itheima.ioc包下,建立測試類TestIoC,並在類中編寫main()方法。在main()方法中,需要初始化Spring容器,並載入配置檔案,然後通過Spring容器獲取userDao例項(即Java物件),最後呼叫例項中的say()方法。
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestIoC {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.say();
}
}
實驗結果如下:
2.4 實驗中關於XML與測試類可能疑惑的點
1.關於XML?
XML裡面我們實際寫的只有一行程式碼其他的配置資訊可以在我給的jar包裡面找到
地址為spring-framework-5.0.0.RELEASE\docs\spring-framework-reference\html5\index
按Ctrl+F,輸入框中輸入“<?xml ”,即可找到複製到XML檔案即可。
至於我們要寫的程式碼如下:
<bean id="userDao" class="com.itheima.ioc.UserDaoImpl" />
解釋✨
Id : 標識該bean的名稱,通過factory.getBean(“id”)來獲得例項。
Class : 該bean的類路徑。
2.關於測試類?
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(配置檔案);
以上程式碼的含義是建立ApplicationContext介面例項
其實Spring為我們提供了兩種核心容器,分別為BeanFactory和ApplicationContext。
老師說實際開發我們是使用ApplicationContext,所以BeanFactory在此略過。
說回ApplicationContext,它由org.springframework.context.ApplicationContext介面定義,不僅包含了BeanFactory的所有功能,還新增了對國際化、資源訪問、事件傳播等方面的支援。
那如何建立ApplicationContext介面例項,有兩種方法:
1.通過ClassPathXmlApplicationContext建立
程式碼示例:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(XML檔案);
?
作用: ClassPathXmlApplicationContext會從類路徑classPath中尋找指定的XML配置檔案,找到並裝載完成ApplicationContext的例項化工作。
2.通過FileSystemXmlApplicationContext建立
程式碼示例:
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(配置檔案);
?
作用:FileSystemXmlApplicationContext會從指定的檔案系統路徑(絕對路徑)中尋找指定的XML配置檔案,找到並裝載完成ApplicationContext的例項化工作。
這裡有點套娃的感覺大家不要暈了。
總結一下:
Spring 有兩個核心容器:
1.BeanFactory
2.ApplicationContext
ApplicationContext有兩種實現方法:
1.通過ClassPathXmlApplicationContext建立
2.通過FileSystemXmlApplicationContext建立
好啦今天的學習就到這結束啦,歡迎大家和我一起交流,指正。
相關文章
- Spring MVC基礎SpringMVC
- Spring MVC與Bootstrap基礎教程 - josdemSpringMVCboot
- Spring MVC應用SpringMVC
- Spring原始碼解析之基礎應用(三)Spring原始碼
- MVC 與三層架構MVC架構
- 實現MVC基礎框架MVC框架
- Spring入門學習手冊 6:Spring MVC基礎中的基礎SpringMVC
- 應用基礎框架全面解析框架
- Util應用框架基礎(三) - 面向切面程式設計(AspectCore AOP)框架程式設計
- Spring 框架基礎(06):Mvc架構模式簡介,執行流程詳解Spring框架MVC架構模式
- scrapy框架簡介和基礎應用框架
- Util應用框架基礎(七) - 快取框架快取
- Util應用框架基礎(六) - 日誌記錄(三) - 寫入 Seq框架
- React元件應用於Spring MVC工程React元件SpringMVC
- Spring MVC之基於java config無xml配置的web應用構建SpringMVCJavaXMLWeb
- Spring系列(六) Spring Web MVC 應用構建分析SpringWebMVC
- Spring Boot + Mybatis + Spring MVC環境配置(四):MVC框架搭建Spring BootMyBatisMVC框架
- Util應用框架基礎(一) - 依賴注入框架依賴注入
- Spring原始碼解析之基礎應用(二)Spring原始碼
- spring框架中三層架構相關的註解Spring框架架構
- 手寫Spring MVC框架(一) 實現簡易版mvc框架SpringMVC框架
- C# EF框架基礎(非MVC)使用筆記C#框架MVC筆記
- tomcat + spring mvc原理外傳:spring mvc與前端的糾葛TomcatSpringMVC前端
- spring mvc 的jpa JpaRepository資料層訪問SpringMVC
- Util應用框架基礎(五) - 異常處理框架
- 使用Java和Spring MVC構建Web應用JavaSpringMVCWeb
- spring mvc 框架搭建及詳解SpringMVC框架
- Spring MVC框架有哪些優點SpringMVC框架
- 面試類 - Spring基礎(三)面試Spring
- 搭建MSSM框架(Maven+Spring+Spring MVC+MyBatis)SSM框架MavenSpringMVCMyBatis
- 瞭解安卓架構(linux核心層、系統執行庫層、應用框架層、應用層)安卓架構Linux框架
- Spring 框架基礎(01):核心元件總結,基礎環境搭建Spring框架元件
- nginx的基礎應用(續)Nginx
- Util應用框架基礎(六) - 日誌記錄(一) - 正文框架
- Util應用框架基礎(二) - 物件到物件對映(AutoMapper)框架物件APP
- Java之Spring基礎與IoCJavaSpring
- echarts基礎應用Echarts
- shell基礎應用