Spring基礎,控制反轉(IOC),理論堆導,初始beans.xml(使用Spring建立物件)
1,IOC的理論推導(非常重要)
前言:ioc是Spring框架的核心思想,不去理解它就去學習Spring,那是不明智的選擇
優點:解耦
原因:再沒接觸ioc思想之前,為滿足客戶需求,一般要在service層例項化一個dao層物件,這是為了與service層產生聯絡,達到引數/資料傳遞的目的,
但這樣耦合度就大大的增加了(因為dao--聯絡-->service--聯絡-->servlet),按照專案的高內聚低耦合的思想,這樣的方法嚴重佔用了資源,所以ioc出現了,
它將需求實現的控制權(就是例項化物件的控制權)交給了使用者,將例項化的過程交給第三方(ioc容器),通過它去與service產生聯絡,實現需求,(降低了耦合,靈活性更高,是各層間更加獨立
小結:(官方解釋)控制反轉是通過描述(XML/或註解),並通過第三方去生產或獲取特定物件的方式,在Spring中是實現控制反轉的是ioc容器,實現方法是依賴注入(Dependency Injecion,DI)
以前,程式是主動建立物件,控制權在程式猿手裡
ioc,控制權在客戶手裡,想建立那個物件,通過ioc容器去建立然後交給專案,因此程式由原來的主動建立變成被動接收,所以被形容為控制反轉(ioc)
注意:所謂的ioc物件由Spring來建立,管理,裝配
很多人都說DI(依賴注入)是ioc的另一種說法,其實不是的,它只是實現ioc的一種方法,ioc是一種思想,是Spring框架的核心思想
依賴注入:本質就是set方法實現的
底層:放射機制,通過全類名去獲得它的屬性和方法
擴充套件:Bean是啥
1、Java面向物件,物件有方法和屬性,那麼就需要物件例項來呼叫方法和屬性(即例項化);
2、凡是有方法或屬性的類都需要例項化,這樣才能具象化去使用這些方法和屬性;
3、規律:凡是子類及帶有方法或屬性的類都要加上註冊Bean到Spring IoC的註解;
4、把Bean理解為類的代理或代言人(實際上確實是通過反射、代理來實現的),這樣它就能代表類擁有該擁有的東西了
5、我們都在微博上@過某某,對方會優先看到這條資訊,並給你反饋,那麼在Spring中,你標識一個@符號,那麼Spring就會來看看,並且從這裡拿到一個Bean或者給出一個Bean
二,使用Spring建立物件
配置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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <!--使用Spring來建立物件,在Spring這些都稱為bean--> <!--通過反射機制的全類名去載入類獲得那個類所有的屬性和方法--> <!--id是物件名,class是全類名--> <bean id="hello" class="com.king.pojo.Hello" > <property name="str" value="Spring"/> </bean> </beans>
擴充套件:在網站維護期間,與該原始碼相比,該配置的好處就是不需要讓專案徹底停機就可以改