Spring - 在ioc容器中裝配bean

      網友投稿 689 2025-03-31

      Spring對過去Bean配置文件的冗長性做出了很多重大改進,很多冗長的配置現在有了簡介的版本。并提供了多種配置方式,既可以使用其中的一種配置,也可以混合使用多種配置。


      Spring容器啟動條件:

      Spring框架的類包都在應用程序的類路徑下

      應用程序為Spring提供完備的Bean配置信息

      Bean的類都已經放到了應用程序的類路徑下

      Bean的元數據信息包括:

      Bean的實現類

      Bean的屬性信息,資源連接數,用戶名密碼等

      Bean的依賴關系

      Bean的行為配置

      基于xml文件的配置

      文件頭聲明比較復雜,默認命名空間,xsi標準命名空間,自定義命名空間,并為每個命名空間指定Schema文件,以xsd結尾

      Schema文檔格式定義文件語法:

      Spring中裝配一個Bean。容器通過getBean(“foo”)即可得到相應的Java Bean

      Spring中不能出現相同的id,但是可以出現相同的name,同name后面覆蓋前面的。

      依賴注入:三種方式,屬性注入,構造函數注入,工廠方法注入

      屬性注入:

      最常用,可選擇性高,靈活性高

      屬性注入要求Bean提供默認構造函數及需要注入屬性的Setter方法。先調用默認構造器構造對象,再通過反射調用Setter方法進行屬性值的注入。

      注意property name=“xxx”和Bean內部屬性名xxx的一致性

      屬性命名規則:變量的前兩個字母要么全部大寫,要么全部小寫。

      構造函數注入:通過不同的構造方法屬性實現注入。

      循環依賴問題:如果兩個Bean采用構造函數注入,并且通過構造函數互相入參引用對方,就會發生類似死鎖的循環引用問題。

      工廠方法配置不經常使用,正在逐漸淡出人們的視野。

      字面值:指可以用字符串表示的值,這些值可以通過標簽進行注入。默認情況下基本數據類型及其封裝類,String類等都可以采用字面值注入的方式。對Boss類引用Car屬性并添加依賴關系。

      Package com.baobaotao.attr; Public class Boss{ Private Car car; Public void setCar(Car car){ This.car = car; } }

      1

      2

      3

      4

      5

      6

      7

      8

      Boss的Bean通過元素引用car Bean,建立起boss對car的依賴。

      1

      2

      3

      4

      5

      6

      元素通過以下三個屬性引用容器中其它Bean。

      :該屬性引用同一容器或者父容器的Bean

      :只能引用同一配置文件中定義的Bean

      :引用父容器中的Bean

      內部Bean類似于java匿名內部類,不會被其他任何Bean引用。

      如果需要注入null值,應當為

      等同于調用car.setBrand(null)的方法。

      級聯屬性:采用以下注入方式:

      1

      2

      3

      同時需要在Boss的對象元素內部設置

      Private Car car = new Car();

      否則將在Spring級聯配置的過程中拋出NullValueInNestedPathException

      Spring為List,Map,Properties提供了配置方式。

      同時也可以采用簡化配置方式進行簡化配置處理。

      使用p命名空間

      Spring - 在ioc容器中裝配bean

      1

      P:屬性名=xxx

      自動裝配:

      autowire=“<自動裝配類型>”

      四種byName,根據名字

      ByType根據屬性,比如Car類型

      Constructor針對構造函數輸入而言的

      Autodetect自動裝配,自動識別,在byName,byType和construstor

      方法注入,使Boss可以每次通過getCar()都返回一個新的Car對象。

      Lookup可以實現動態的注入。

      replacer可以實現方法替換,一種很魔術的功能。

      通過parent屬性實現Bean的繼承

      通過實現依賴,也可以通過depends-on屬性來進行依賴管理。

      Idref可以用來實現引用

      Bean的作用域:singleton,prototype,request,session,globalSession

      配置scope=“<作用域類型>”

      基于注解的配置。@Component(“userDao”)

      也有等效于@Component的注解

      @RespositoryL用于對DAO實現類進行標注

      @Service:用于對Service實現類進行標注

      @Controller: 用于對Controller實現類進行標注

      使用@Autowired注解,當且僅當有一個對應匹配的Bean的時候,就會被注入到變量中。

      通過require屬性,可以在require=false時找不到也不會報錯

      Spring 容器

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel刪除前面幾個字符
      下一篇:如何在Excel中突出顯示列表中與給定數字最接近的值?
      相關文章
      国产亚洲精品高清在线| 亚洲AV色吊丝无码| 亚洲成av人片不卡无码| 婷婷精品国产亚洲AV麻豆不片| 亚洲Av无码国产情品久久| 亚洲精品无码你懂的| 亚洲av永久无码嘿嘿嘿 | 亚洲一级毛片视频| 亚洲国产精品午夜电影| 亚洲图片校园春色| 亚洲区视频在线观看| 亚洲一区在线观看视频| 亚洲国产精品综合一区在线| 91亚洲精品自在在线观看| 亚洲人成7777影视在线观看| 亚洲成年人电影网站| 亚洲中字慕日产2021| 亚洲永久在线观看| 亚洲人成未满十八禁网站| 亚洲精品自偷自拍无码| 看亚洲a级一级毛片| 亚洲国产中文v高清在线观看| 亚洲精品成a人在线观看| 久久亚洲精品无码观看不卡| 亚洲人成网站在线观看青青| 亚洲最大AV网站在线观看| 国产亚洲精品精华液| 亚洲欧洲国产精品你懂的| 亚洲黄色免费网址| 亚洲综合色7777情网站777| 亚洲综合精品成人| 国产精品亚洲一区二区无码| 亚洲国产一级在线观看| 亚洲精品午夜国产VA久久成人| 亚洲福利在线视频| 亚洲另类古典武侠| 亚洲色最新高清av网站| 国产亚洲综合久久| 中文字幕亚洲乱码熟女一区二区| 亚洲AV无码久久精品色欲| 亚洲毛片在线免费观看|