javascript
一.Spring框架基础
JAVAEE框架之Spring
一.Spring框架基礎(chǔ)
Spring:春天;輕量級(jí)的企業(yè)級(jí)開(kāi)發(fā)框架,核心是IOC(控制反轉(zhuǎn))和AOP(面向切面編程)。
官網(wǎng):spring.io
Spring–>Spring MVC -->MyBatis–>Spring Boot–>SpringCloud–>Spring Security
Spring的歷史,我們來(lái)百度一下,一塊看下,不再錄屏。
Spring Framework創(chuàng)始人,著名作者。 Rod在悉尼大學(xué)不僅獲得了計(jì)算機(jī)學(xué)位,同時(shí)還獲得了音樂(lè)學(xué)位。更令人吃驚的是在回到軟件開(kāi)發(fā)領(lǐng)域之前,他還獲得了音樂(lè)學(xué)的博士學(xué)位。
Spring從2002年開(kāi)始出來(lái),到現(xiàn)在是Spring 5.0了,快火了20年了,證明這個(gè)框架有其獨(dú)特之處、有其過(guò)人之處。
1.1 Spring作用
? MVC設(shè)計(jì)模式挺好,但是有很多問(wèn)題,主要問(wèn)題就是高耦合,在controller(Servlet)里面有對(duì)于業(yè)務(wù)層對(duì)象的耦合,在業(yè)務(wù)層里面有對(duì)于dao層對(duì)象的耦合,在BaseDao里面,有數(shù)據(jù)庫(kù)連接的耦合。
? 框架前奏,我們做的這些耦合的解耦。這些解耦是我們自己完成的,也就是說(shuō)我們不用框架,也可以來(lái)實(shí)現(xiàn)解耦。
框架就是比較成熟的解耦半成品程序,可以讓程序員在這個(gè)框架的基礎(chǔ)上實(shí)現(xiàn)良好的,“高內(nèi)聚、低耦合”的程序,實(shí)現(xiàn)面向?qū)ο蟮摹案呖捎谩⒔研?、可?fù)用”。
? Spring功能作業(yè),程序解耦。
1.2 Spring 結(jié)構(gòu)
jar包:[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-g15vqMH6-1591682862110)(E:\政通路\課堂筆記\S2\Spring\assets\image-20200608150007964.png)]
schema:概要|約束,一般都是xml文件的約束,spring針對(duì)xml配置文件有多重約束。
libs:存放spring5.0需要jar包,必備品
docs:spring開(kāi)發(fā)英文原滋原味的幫助文檔
1.3 控制反轉(zhuǎn)
**Inversion of Control,即“控制反轉(zhuǎn)”,不是什么技術(shù),而是一種設(shè)計(jì)思想。**在Java開(kāi)發(fā)中,Ioc意味著將你設(shè)計(jì)好的對(duì)象交給容器控制,而不是傳統(tǒng)的在你的對(duì)象內(nèi)部直接控制(創(chuàng)建)。
控制反轉(zhuǎn)是一種設(shè)計(jì)思想而依賴注入是這種思想的具體實(shí)現(xiàn)。
控制反轉(zhuǎn)的實(shí)現(xiàn)=依賴查找+依賴注入
- 依賴查找:容器提供回調(diào)接口和上下文環(huán)境給組件
- 依賴注入:程序代碼不做定位查詢,這些工作由容器自行完成
? 依賴注入是目前最優(yōu)秀的解耦方式。依賴注入讓 Spring 的 Bean之間以配置文件的方式 組織在一起,而不是以硬編碼的方式耦合在一起的。
Bean:可重用組件;
JAVABean:Java程序的可重用組件,要遠(yuǎn)大于實(shí)體類的概念。比如說(shuō)之前的UserService,UserServiceImpl,都可以作為Bean。
現(xiàn)實(shí)案例:
我們要吃飯,要做飯,牛排沙拉,自己動(dòng)手,豐衣足食。
? 紅燒肉
? 蛋炒飯
? 陜西米皮
? 我們自己想是啥,就做啥,類似于軟件開(kāi)發(fā)中的,程序員自己new 出來(lái)一個(gè)對(duì)象(飯)。畢竟新東方廚師學(xué)校出來(lái)的比較少,好多人還是不會(huì)做飯。這時(shí)候就催生了一個(gè)機(jī)構(gòu)(公司),我這公司平臺(tái)上有很多好吃飯的,你只需要點(diǎn)飯就可以了。具體是如何出來(lái)的你不管用,不好吃,差評(píng),無(wú)條件退飯。公司–》傳說(shuō)中的美團(tuán)。美團(tuán)就是一個(gè)第三方的機(jī)構(gòu),美團(tuán)做飯嗎?平臺(tái)。
? 美團(tuán)平臺(tái)上,有很多餐飲公司注冊(cè)到上面了,然后提供給美團(tuán)很多菜品,供客戶選擇。
客戶要吃飯,客戶依賴于美團(tuán)。是一種依賴關(guān)系。
餐飲公司要掙錢,依賴于美團(tuán),也是一種依賴關(guān)系。
延伸一下:
大家都是青年帥哥、美女,當(dāng)然學(xué)習(xí)軟件開(kāi)發(fā)的帥哥比較多,找對(duì)象,你自己一個(gè)一個(gè)找,比較麻煩,也比較累,這時(shí)候類似于我們程序員開(kāi)發(fā)中的new 對(duì)象出來(lái)。不再new了,借助于一個(gè)平臺(tái),婚介所(世紀(jì)佳緣、珍愛(ài)網(wǎng)等),有各種各樣的妹子、帥哥,供你選擇。
1.4 Spring實(shí)現(xiàn)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對(duì)象出來(lái) g1.setId(1); g1.setName("小芳"); g1.setHobby("寫(xiě)代碼"); 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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--這個(gè)是默認(rèn)bean配置文件的約束信息--><!--beans:所有bean的集合;Spring就是Bean的容器,管理可重用組件--><!--單個(gè)的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 測(cè)試類
//第二種情況,交由Spring容器,來(lái)替我們選分配對(duì)象; //應(yīng)用程序上下文對(duì)象; ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml"); //查找bean:g1,通過(guò)bean的id(g1)來(lái)查找Girld對(duì)象; Gril g1 = (Gril) ac.getBean("g1"); //輸出g1的信息; System.out.println(g1.toString());總結(jié):
? Bean是Spring管理的基本單位,在基于Spring的Java EE應(yīng)用中,所有的組件都被當(dāng)成Bean處理,包括數(shù)據(jù)源、Hibernate的SessionFactory、事務(wù)管理器等。在Spring中,Bean的是一個(gè)非常廣義的概念,任何的Java對(duì)象、Java組件都被當(dāng)成Bean處理。
總結(jié)
以上是生活随笔為你收集整理的一.Spring框架基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MAVEN 傻瓜式快速教程
- 下一篇: gradle idea java ssm