關(guān)于Spring不同類(lèi)型的注入方式 p-namespace,c-namespace
Spring不同類(lèi)型的注入方式
1、不同類(lèi)型的注入方式
<?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"> <bean id="address" class="com.hu.pojo.Address"> <property name="address" value="lalala"/> </bean> <bean id="student" class="com.hu.pojo.Student"> <!--注入value--> <property name="name" value="pengpeng"/> <!--第二種bean注入,ref--> <property name="address" ref="address"/> <!--String[]數(shù)組注入--> <property name="book"> <array> <value>紅樓夢(mèng)</value> <value>水滸傳</value> </array> </property> <!--list注入--> <property name="hobbys"> <list> <value>聽(tīng)歌</value> <value>make</value> </list> </property> <!--map注入--> <property name="card"> <map> <entry key="gender" value="male"/> </map> </property> <!--set注入--> <property name="games"> <set> <value>lol</value> </set> </property> <!--空值--> <property name="wife" value=""/> <!--properties注入--> <property name="info"> <props> <prop key="學(xué)號(hào)">15200000</prop> <prop key="專(zhuān)業(yè)">CS</prop> </props> </property> </bean> </beans>
2、p-namespace以及c-namespace
2.1 添加方法
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" <!--加上這個(gè)--> xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user" class="com.hu.pojo.User" p:name="鵬鵬"/> </beans>
2.2 p和c區(qū)別
p-namespace
:通過(guò)值進(jìn)行注入,簡(jiǎn)潔方便c-namespace
:通過(guò)構(gòu)造器進(jìn)行注入,需要在java類(lèi)文件中加上有參構(gòu)造器和無(wú)參構(gòu)造器
Spring p-namespace和c-namespace用法
為什么要講Spring的 p-namespace,c-namespace
- 對(duì)于簡(jiǎn)單項(xiàng)目或代碼,可以起到簡(jiǎn)化的作用
- 加強(qiáng)對(duì)Spring新知識(shí)的學(xué)習(xí)
- 學(xué)習(xí)就是了,哪來(lái)那么多為什么!
1、p-namespace
①又叫p-命名空間,
②它是什么意思呢?
首先這樣子講吧,以前我們寫(xiě)bean的時(shí)候?yàn)槟硞€(gè)對(duì)象的屬性注入值有兩種方式,一種是有參構(gòu)造(constructor-arg),一種是通過(guò)(property標(biāo)簽為指定屬性注入值)
③而p正是property的首字母,所以它是干嘛的大家應(yīng)該可以猜得到了
④純粹上是為了簡(jiǎn)化吧(個(gè)人認(rèn)為)
⑤我們直接上例子來(lái)學(xué)習(xí)吧
首先在使用p命名空間之前你需要在相應(yīng)的xml文件內(nèi)寫(xiě)入一些支持配置信息
xmlns:p="http://www.springframework.org/schema/p"
項(xiàng)目結(jié)構(gòu)搭建好,還是上節(jié)筆記搭建的(傳送門(mén)在博文(個(gè)_個(gè)))
package com.ysj.study; @SuppressWarnings("ALL") public class HelloDemo1 { private String name; private int age; public HelloDemo1(){ System.out.println("HelloDemo1的 無(wú) 參構(gòu)造"); } public HelloDemo1(String name) { System.out.println("HelloDemo1的 有 參構(gòu)造"); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
測(cè)試類(lèi)寫(xiě)好
輸出看看結(jié)果
這需要注意一下p標(biāo)簽后面的是屬性的名字,不是setter參數(shù)的名字!?。?!
2、c-namespace
①又叫c-命名空間,
②它是什么意思呢?
就是用來(lái)通過(guò)有參構(gòu)造為對(duì)象注入初始屬性值
③而c正是constructor-arg的首字母,所以它是干嘛的大家應(yīng)該也可以猜得到了
④純粹上是為了簡(jiǎn)化吧(個(gè)人認(rèn)為)
⑤我們直接上例子來(lái)學(xué)習(xí)吧
首先在使用c命名空間之前你需要在相應(yīng)的xml文件內(nèi)寫(xiě)入一些支持配置信息
xmlns:c="http://www.springframework.org/schema/c"
我們對(duì)上面HelloDemo類(lèi)的有參構(gòu)造進(jìn)行一些修改
修改為如下的beans.xml代碼
輸出結(jié)果看看
我們把setter方法都去掉,發(fā)現(xiàn)還是可以運(yùn)行的,所以c-命名空間的用法和constructor-agr是一模一樣的
只需要注意下面的圖例就可以
c-namespace的拓展:
其實(shí)c-namespace除了通過(guò)參數(shù)名字來(lái)注入值以外,還可以通過(guò)參數(shù)索引來(lái)注入依賴(lài)值。如下
輸出結(jié)果還是可以的
關(guān)于p-namespace和c-namespace的用法就這么多,慢慢吸收O(∩_∩)O哈哈~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot中Redis數(shù)據(jù)庫(kù)的使用實(shí)例
Spring Boot中除了對(duì)常用的關(guān)系型數(shù)據(jù)庫(kù)提供了優(yōu)秀的自動(dòng)化支持之外,對(duì)于很多NoSQL數(shù)據(jù)庫(kù)一樣提供了自動(dòng)化配置的支持。本篇文章主要介紹了Spring Boot中Redis的使用實(shí)例代碼,有興趣的開(kāi)業(yè)了解一下。2017-04-04Java注解Annotation原理及自定義注解代碼實(shí)例
這篇文章主要介紹了Java注解Annotation原理及自定義注解代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10MyBatis-Plus 修改和添加自動(dòng)填充時(shí)間方式
這篇文章主要介紹了MyBatis-Plus 修改和添加自動(dòng)填充時(shí)間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的實(shí)現(xiàn)
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的實(shí)現(xiàn),雙向鏈表是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),它允許在鏈表中的任意位置進(jìn)行高效的插入和刪除操作,需要的朋友可以參考下2022-05-05spring security與corsFilter沖突的解決方案
這篇文章主要介紹了spring security與corsFilter沖突的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11spring 整合kafka監(jiān)聽(tīng)消費(fèi)的配置過(guò)程
這篇文章主要介紹了spring 整合kafka監(jiān)聽(tīng)消費(fèi)的配置過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03springboot mybatis調(diào)用多個(gè)數(shù)據(jù)源引發(fā)的錯(cuò)誤問(wèn)題
這篇文章主要介紹了springboot mybatis調(diào)用多個(gè)數(shù)據(jù)源引發(fā)的錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01