一.Spring框架基礎

JAVAEE框架之Spring 一.Spring框架基礎

Spring:春天;輕量級的企業級開發框架,核心是IOC(控制反轉)和AOP(面向切面編程)。java

官網:spring.io程序員

Spring–>Spring MVC -->MyBatis–>Spring Boot–>SpringCloud–>Spring Securityspring

Spring的歷史,咱們來百度一下,一塊看下,再也不錄屏。數據庫

Spring Framework創始人,著名做者。 Rod在悉尼大學不只得到了計算機學位,同時還得到了音樂學位。更使人吃驚的是在回到軟件開發領域以前,他還得到了音樂學的博士學位。編程

Spring從2002年開始出來,到如今是Spring 5.0了,快火了20年了,證實這個框架有其獨特之處、有其過人之處。設計模式

1.1 Spring做用

​ MVC設計模式挺好,可是有不少問題,主要問題就是高耦合,在controller(Servlet)裏面有對於業務層對象的耦合,在業務層裏面有對於dao層對象的耦合,在BaseDao裏面,有數據庫鏈接的耦合。框架

​ 框架前奏,咱們作的這些耦合的解耦。這些解耦是咱們本身完成的,也就是說咱們不用框架,也能夠來實現解耦。ide

框架就是比較成熟的解耦半成品程序,可讓程序員在這個框架的基礎上實現良好的,「高內聚、低耦合」的程序,實現面向對象的「高可用、健壯性、可複用」。學習

​ Spring功能做業,程序解耦。測試

1.2 Spring 結構

jar包:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-g15vqMH6-1591682862110)(E:\政通路\課堂筆記\S2\Spring\assets\image-20200608150007964.png)]

schema:概要|約束,通常都是xml文件的約束,spring針對xml配置文件有多重約束。

libs:存放spring5.0須要jar包,必備品

docs:spring開發英文原滋原味的幫助文檔

在這裏插入圖片描述

1.3 控制反轉

**Inversion of Control,即「控制反轉」,不是什麼技術,而是一種設計思想。**在Java開發中,Ioc意味着將你設計好的對象交給容器控制,而不是傳統的在你的對象內部直接控制(建立)。

控制反轉是一種設計思想而依賴注入是這種思想的具體實現。

控制反轉的實現=依賴查找+依賴注入

  • 依賴查找:容器提供回調接口和上下文環境給組件
  • 依賴注入:程序代碼不作定位查詢,這些工做由容器自行完成

​ 依賴注入是目前最優秀的解耦方式。依賴注入讓 Spring 的 Bean之間以配置文件的方式 組織在一塊兒,而不是以硬編碼的方式耦合在一塊兒的。

Bean:可重用組件;

JAVABean:Java程序的可重用組件,要遠大於實體類的概念。好比說以前的UserService,UserServiceImpl,均可以做爲Bean。

現實案例:

咱們要吃飯,要作飯,牛排沙拉,本身動手,豐衣足食。

​ 紅燒肉

​ 蛋炒飯

​ 陝西米皮

​ 咱們本身想是啥,就作啥,相似於軟件開發中的,程序員本身new 出來一個對象(飯)。畢竟新東方廚師學校出來的比較少,好多人仍是不會作飯。這時候就催生了一個機構(公司),我這公司平臺上有不少好吃飯的,你只須要點飯就能夠了。具體是如何出來的你無論用,很差吃,差評,無條件退飯。公司–》傳說中的美團。美團就是一個第三方的機構,美團作飯嗎?平臺。

​ 美團平臺上,有不少餐飲公司註冊到上面了,而後提供給美團不少菜品,供客戶選擇。

客戶要吃飯,客戶依賴於美團。是一種依賴關係。

餐飲公司要掙錢,依賴於美團,也是一種依賴關係。

延伸一下:

你們都是青年帥哥、美女,固然學習軟件開發的帥哥比較多,找對象,你本身一個一個找,比較麻煩,也比較累,這時候相似於咱們程序員開發中的new 對象出來。再也不new了,藉助於一個平臺,婚介所(世紀佳緣、珍愛網等),有各類各樣的妹子、帥哥,供你選擇。

1.4 Spring實現IOC

1.4.1 pom.xml

<!--第一步:Spring jar依賴-->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.7.RELEASE</version>
        </dependency>
    </dependencies>

在這裏插入圖片描述

1.4.2 Gril類

private Integer id;
private String name;
private String hobby;
//本身增長:身高 體重
其餘代碼本身完善
Gril g1=new Gril();  //須要本身new對象出來
g1.setId(1);
g1.setName("小芳");
g1.setHobby("寫代碼");
System.out.println(g1.toString());

1.4.3 配置文件

<?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 https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--這個是默認bean配置文件的約束信息-->
    <!--beans:全部bean的集合;Spring就是Bean的容器,管理可重用組件-->
    <!--單個的bean定義-->
    <bean id="g1" class="com.aaa.pojo.Gril">
    <!--屬性-->
        <property name="id" value="1"/>
        <property name="name" value="小芳"/>
        <property name="hobby" value="吃雞遊戲"/>
    </bean>
</beans>

1.4.3 測試類

//第二種狀況,交由Spring容器,來替咱們選分配對象;
//應用程序上下文對象;
ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
//查找bean:g1,經過bean的id(g1)來查找Girld對象;
Gril g1 = (Gril) ac.getBean("g1");
//輸出g1的信息;
System.out.println(g1.toString());

總結:

​ Bean是Spring管理的基本單位,在基於Spring的Java EE應用中,全部的組件都被當成Bean處理,包括數據源、Hibernate的SessionFactory、事務管理器等。在Spring中,Bean的是一個很是廣義的概念,任何的Java對象、Java組件都被當成Bean處理。

相關文章
相關標籤/搜索