01-spring配置詳解

1 bean元素

<!--將User對象交給spring容器進行管理  --><!-- Bean元素:使用該元素描述需要spring容器管理的對象class屬性:被管理對象的完整類名.name屬性:給被管理的對象起個名字.獲得對象時根據該名稱獲得對象.  可以重復.可以使用特殊字符.id屬性: 與name屬性一模一樣. 名稱不可重復.不能使用特殊字符.結論: 盡量使用name屬性.--><bean name="user" class="www.test.bean.User"></bean>

2 對象的三種創建方式

   <!--對象創建方式1-空參數構造  --><bean name="user" class="www.test.bean.User"></bean><!-- ================================================  --><!--對象創建方式2-靜態工廠創建調用UserFactory的靜態方法createUser方法創建名為user2的對象.放入容器--><bean name="user2" class="www.test.b_create.UserFactory"factory-method="createUser"></bean><!-- =====================================================  --><!--對象創建方式3-實例工廠創建  --><!--調用UserFactory對象的createUser2方法創建名為user3的對象.放入容器  --><bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean><bean name="userFactory" class="www.test.b_create.UserFactory" />

3 scope屬性

<bean name="user" class="www.test.bean.User" scope="singleton"></bean>
<bean name="user" class="www.test.bean.User" scope="prototype"></bean>
public void fun1(){//1創建容器對象applicationContextApplicationContext ac = new ClassPathXmlApplicationContext("www/test/b_create/applicationContext.xml");//2向容器中"要"user對象User user1 = (User) ac.getBean("user");User user2 = (User) ac.getBean("user");User user3 = (User) ac.getBean("user");User user4 = (User) ac.getBean("user");//3打印userSystem.out.println(user1==user4); // singletom : true// prototype : false}

4 初始化&銷毀方法

@Test//測試對象的生命周期public void fun4(){//1 創建容器對象ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("www/test/b_create/applicationContext.xml");//2 向容器“要”User對象User user = (User) ac.getBean("user");//3打印
        System.out.println(user);ac.close();}

5 模塊化配置

<!--導入其它spring配置  -->
<import resource="www/test/b_create/applicationContext.xml"/>

6 屬性的注入

?1 set方式注入

<!--set方式注入  -->
<bean name="user" class="www.test.bean.User"><!--值類型注入: 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom"></property><property name="age" value="25"></property><!-- 引用類型注入: 為car屬性注入下方配置的car對象 --><property name="car" ref="car"></property>
</bean>
<!-- 將car對象配置到容器中 -->
<bean name="car" class="www.test.bean.Car"><property name="name" value="奧迪"></property><property name="color" value="黑色"></property>
</bean>

2 構造函數注入

<!-- 將car對象配置到容器中 -->
<bean name="car" class="www.test.bean.Car"><property name="name" value="奧迪"></property><property name="color" value="黑色"></property>
</bean><!-- ============================================= -->
<!-- 構造函數注入  -->
<bean name="user2" class="www.test.bean.User"><constructor-arg name="name" value="lucy"></constructor-arg><constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<bean name="user3" class="www.test.bean.User"><constructor-arg name="name" index="0" value="jack"></constructor-arg><constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<bean name="user4" class="www.test.bean.User"><constructor-arg name="name" index="1" value="jack"></constructor-arg><constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<bean name="user5" class="www.test.bean.User"><constructor-arg name="name" index="0" type="java.lang.Integer" value="888"></constructor-arg><constructor-arg name="car" ref="car"></constructor-arg>
</bean>

3 p 名稱空間

<!-- p名稱空間注入, 走set方法
1.導入P名稱空間  xmlns:p="http://www.springframework.org/schema/p"
2.使用p:屬性完成注入|-值類型: p:屬性名="值"|-對象類型: p:屬性名-ref="bean名稱"-->
<bean name="user6" class="www.test.bean.User" 
p:name="jerry" p:age="15" p:car-ref="car"></bean>

4 spel注入

<!-- 
spel注入: spring Expression Language sping表達式語言
-->
<bean name="user7" class="www.test.bean.User"><property name="name" value="#{user6.name}"></property><property name="age" value="#{user.age}"></property><property name="car" ref="car"></property>
</bean>

7 復雜類型的注入

<!-- 復雜類型的注入 -->
<bean name="cb" class="www.test.bean.CollectionBean"><!-- 如果數組中只準備注入一個值(對象),直接使用value|ref即可 --><!-- <property name="arr" value="tom"></property> --><!-- <property name="arr" ref="car"></property> --><!-- array注入,多個元素注入 --><property name="arr"><array><value>tom</value><value>jerry</value><ref bean="user4" /></array></property><!-- 如果List中只準備注入一個值(對象),直接使用value|ref即可 --><!-- <property name="list" value="jack"></property> --><!-- <property name="list" ref="user"></property> --><!-- list注入,多個元素注入 --><property name="list"><list><value>jack</value><value>lisi</value><value>zhangsan</value><ref bean="user"/></list></property><!-- map類型注入 --><property name="map"><map><entry key="url" value="jdbc:mysql:///spring"></entry><entry key="user" value-ref="user6"></entry><entry key-ref="user2" value-ref="user" ></entry></map></property><!-- prperties 類型注入 --><property name="prop"><props><prop key="url">jdbc:mysql:///spring</prop><prop key="class">com.mysql.jdbc.Driver</prop><prop key="user">root</prop><prop key="password">root</prop></props></property></bean>

?

轉載于:https://www.cnblogs.com/jepson6669/p/8536356.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250858.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250858.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第八模塊:算法設計模式、企業應用 第2章 企業應用工具學習

第八模塊&#xff1a;算法&設計模式、企業應用 第2章 企業應用工具學習轉載于:https://www.cnblogs.com/tqtl911/p/9131614.html

http --- 混合加密的具體過程

混合加密: 共享加密存在一個“共享密鑰”無法安全告知服務端的問題.公開加密存在,加密、解密速度慢的問題.混合加密則同時使用了2種加密技術,具體過程如下: 1. B提前生成公鑰P和私鑰S,并將P發布到網上 2. A想(通過互聯網)像B發送數據 3. A從互聯網上獲取B的公鑰P,并使用P對共享…

Vite+Vue3頁面空白、圖標不顯示問題解決

頁面空白問題 由于項目部署在子文件夾下&#xff0c;因此需要配置vite.config.js const config {base: ./, }el-icon圖標不顯示、打包時mkdir無權限 在控制臺Network看字體圖標的請求&#xff0c;發現地址多了_assets&#xff0c;本以為需要重新配置publicDir&#xff0c;后…

在HTML打開已安裝的App,未安裝跳轉到對應的下載鏈接

借鑒 HTML中判斷手機是否安裝某APP&#xff0c;跳轉或下載該應用 function lookApp () {var ua navigator.userAgentvar isAndroid /(Android);?[\s/]([\d.])?/.test(ua)var isIpad /(iPad).*OS\s([\d_])/.test(ua)var isIpod /(iPod)(.*OS\s([\d_]))?/.test(ua)var is…

javascript --- 自定義數組的反序函數

想寫一個自定義的_reverse函數,其作用是將傳入的數組進行部分反序. 效果如下: 輸入[1,2,3,4,5,6,7,8,9] 第一個將2~4個位置的數字反序 第二個將2~6個位置的數字反序. // js function _reverse(arr, s, e) {arr arr.join().slice(0,s) arr.join().slice(s,e).split().revers…

21 Fragment和短語法應用

React.Fragment jsx語法&#xff0c;相當于document.createDocumentFragment()創建文檔碎片容器&#xff0c;優化渲染解決了沒有根節點的問題<></>這種短語法也會聲明React.Fragment但短語法不支持keyReact.Fragment只支持key屬性&#xff0c;其余屬性如事件等不支…

201521123004《軟件工程》個人閱讀作業1

task1Task2: 201521123004 林藝如 博客&#xff1a;https://www.cnblogs.com/dabaolyr/ 碼云&#xff1a;https://gitee.com/dabao_lyr Task3&#xff1a;完成博客-閱讀與思考 閱讀參考材料&#xff0c;并回答下面幾個問題&#xff1a; &#xff08;1&#xff09;回想一下你初入…

在sql當中為了讓數據做緩存做with as的操作

今天看別人的代碼&#xff0c;突然發現之前理解的sql的with as的用法有新的理解。 之前理解的with as只是想著做單表的union all 操作時才使用&#xff0c;今天發現在可以使用逗號做分割&#xff0c;做緩存不同的表數據。 下面的例子如下&#xff1a; WITH t1 AS (SELECT file_…

javascript --- 從數組中,找出比給定元素大一丁點的元素

目標如下: 從數組[1,3,2,4,5,6,7]中找到比第1個位置大一丁點的元素 function _findIndex(arr, j){let k -1;let key arr[j];for(let i j; i< arr.length; i) {if(arr[i] > key) {if( k ! -1){if(arr[i] < arr[k]) {k i;}} else {k i;}}}return k } let arr [1,…

22 React高階組件

搭建服務端 yarn add express yarn add nodemon 在server目錄下 npm init -y // 增加dev腳本"scripts": {"dev": "nodemon ./index.js"},引入 git HOC High Order Component 高階組件&#xff0c;是組件的抽象HOC不是React提供的API&#xf…

PAT (Advanced Level) 1140~1143:1140模擬 1141模擬 1142暴力 1143 BST+LCA

1140 Look-and-say Sequence&#xff08;20 分&#xff09; 題意&#xff1a;觀察序列D, D1, D111, D113, D11231, D112213111, ...&#xff0c;顯然后一個串是對前一個串每一小段連續相同的字母及其個數的描述。例如&#xff0c;D112213111是對D11231的描述&#xff0c;原因是…

AngularJS:表達式

ylbtech-AngularJS&#xff1a;表達式1.返回頂部 1、AngularJS 表達式 AngularJS 使用 表達式 把數據綁定到 HTML。 AngularJS 表達式 AngularJS 表達式寫在雙大括號內&#xff1a;{{ expression }}。 AngularJS 表達式把數據綁定到 HTML&#xff0c;這與 ng-bind 指令有異曲同…

23 Refs的應用場景與選用思考

Refs含義 允許訪問真實DOMReact數據流&#xff1a;通過props來實現父子組件的交互Refs允許強制修改子組件 // 1. 構造器離添加實例屬性 this.ref React.createRef() // 2. 組件上綁定ref ref{this.ref} // 3. 使用&#xff1a;this.ref.currentinput class MyInput extends…

flutter --- Windows下環境配置

https://flutter.liulongbin.top/ https://www.cnblogs.com/zxsh/archive/2018/04/16/8859048.html

省選模擬賽記錄(越往下越新哦~~~)

LOG 模擬賽第一次見尼瑪這么給數據范圍的……開考有點困,迷迷糊糊看完了三道題,真的是像老呂說的那樣,一道都不會……思考T1,感覺有點感覺,但是太困了,就先碼了暴力,發現打表可以50分,于是就大力打了一波表……轉身T3,碼出25分的O(n^2)算法,然后不會了……去了T2,碼出35分的O(n…

MFC-CString與int互相轉化

1. CString轉int int n 0; CString str _T("123");n _ttoi(str); 2. int轉CString int n 0; CString str; str.Format(_T(%d) , n); 參考&#xff1a;MFC中 CString與int的轉化 vs2010 中 MFC::CString 如何和int相互轉化 轉載于:https://www.cnblogs.com/Tang-…

flutter --- 使用dio包

打開pubspec.yaml找到dependencies在最下面添加 dio: ^1.0.9ctrl s 之后,會自動下載依賴 使用: // get請求 import package:dio/dio.dart; Dio dio new Dio(); var response await dio.get("/test", data:{"id":12, "name":"marron&qu…

24 React.createRef()用法細節分析

通過React.createRef → ref對象通過元素的ref屬性可以附加到React元素上一般通過構造器中給this的屬性賦值一個ref&#xff0c;方便整個組件使用ref只要傳遞到react元素中&#xff0c;就可以利用ref的current屬性訪問到該真實DOM節點ref在componentDidMount和componentDidUpda…

對于下一代互聯網的暢想

去中心化 每臺客戶機都將成為服務器, 爭取對資源的充分利用 顯示屏化 運算功能交給云服務器, 每臺客戶機的主要任務是顯示 交互 聯網而不是進行運算, 爭取對資源的盡可能節省 優點 可以大大降低客戶機的成本, 減少資源的浪費, 而且使客戶機之間的區別變得更小(因為都主要負責顯…

npm install mysql --save-dev

npm install X: 會把X包安裝到node_modules目錄中不會修改package.json之后運行npm install命令時&#xff0c;不會自動安裝Xnpm install X –save: 會把X包安裝到node_modules目錄中 會在package.json的dependencies屬性下添加X 之后運行npm install命令時&#xff0c;會自動…