1. 程式人生 > 實用技巧 >Spring基礎,控制反轉(IOC),理論堆導,初始beans.xml(使用Spring建立物件)

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>

擴充套件:在網站維護期間,與該原始碼相比,該配置的好處就是不需要讓專案徹底停機就可以改