av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

淺談Spring Bean的基本配置

瀏覽:26日期:2022-08-13 09:37:57
一、Spring中set方法的注入

User實體

@Data//lombok提供的有參構(gòu)造@AllArgsConstructorlombok提供的無參構(gòu)造@NoArgsConstructorpublic class User { private int id; private String name; private int age; private String sex; private String birthday;}

beanFactory.xml

<bean class='edu.xalead.User'><property name='id' value='1806'/><property name='name'> <value>張三</value></property><property name='sex' value='男'/><property name='age' value='18'/><property name='birthday' value='2000-1-1'/> </bean>1.1 set的兩種注入方法

我們在xml文件中注入的時候我們可以寫成這樣:

<property name='id' value='1806'/>

也可以寫成這樣:

<property name='id'> <value>1806</value></property>

這沒什么區(qū)別的,不過我們一般使用前者,畢竟看起來代碼少,也方便

代碼測試:

@Test public void test3(){//創(chuàng)建工廠BeanFactory beanFactory = new ClassPathXmlApplicationContext('beanFactory.xml');//從工廠中拿配置好的UserServlet實例User user = beanFactory.getBean(User.class);System.out.println(user); }

淺談Spring Bean的基本配置

1.2 type屬性

有事我們在注入的時候有時候會看到type:

<property name='id'> <value type='int'>1806</value></property>

這相當于一個類型聲明,聲明value是什么類型的數(shù)據(jù),然后調(diào)用類型轉(zhuǎn)換器將我們寫入的字符串轉(zhuǎn)換為我們我們所定義的類型。但其實這是一個多余的,當我們注入的時候,會通過User對象進行反射從而知道是什么類型。

1.3 Date()類型的注入

但有一些特殊的類型是Spring所沒有的,需要我們自己去定義,就比如Date類型,如果我們這樣寫就會報錯

private Date birthday;

<property name='birthday' value='2000-1-1'/>

淺談Spring Bean的基本配置

Spring是沒有這個的轉(zhuǎn)換器,將字符串轉(zhuǎn)換為Date類型,所以其實我們可以直接用String來寫,或者new Date(),但是后者約束性太大,不能得到我們想要的日期,還是前者方便。

二、Spring_scop

當我們在測試案例中創(chuàng)建兩個User實例時,進行檢查發(fā)現(xiàn),這兩個實例其實是一個

BeanFactory beanFactory = new ClassPathXmlApplicationContext('beanFactory.xml');//從工廠中拿配置好的UserServlet實例User user = beanFactory.getBean(User.class);User user1 = beanFactory.getBean(User.class);System.out.println(user == user1);

淺談Spring Bean的基本配置

如果我們要創(chuàng)建多例模式,就要使用到屬性scope

scope屬性有兩個值:

1.singleton(默認情況下,即單例模式)

2.prototype(多例模式)

<bean scope='prototype'>

我們在進行測試答案為false

三、自動注入(autowire)

我們在userServlet中注入userDao

<bean class='edu.xalead.UserDao'></bean><bean class='edu.xalead.UserServlet'> <property name='userDao' ref='userDao'/></bean>

但其實我們沒必要這樣寫,Bean中you自動注入的屬性autowire,他有兩個值:

1.byName,根據(jù)名字注入,即id=“userDao”

<bean class='edu.xalead.UserDao'></bean><bean autowire='byName'/>

2.byType,根據(jù)類型注入,類型注入比較有局限性,同種類型只能注入一個,多了會報不是唯一錯誤

<bean class='edu.xalead.UserDao'></bean><bean autowire='byType'>四、構(gòu)造注入

<!-- User有個四參構(gòu)造,我們通過constructor-arg一個一個對應(yīng)構(gòu)造參數(shù)進行值的注入 --><bean class='edu.xalead.User'> <constructor-arg value='1111'/> <constructor-arg value='zhangsan'/> <constructor-arg value='20'/> <constructor-arg value='M'/></bean>

構(gòu)造注入和set注入的不同點就是,加入元素的順序必須和你所創(chuàng)建的實體(User)類相同,若不同,則會報錯,由于反射過來的類型和轉(zhuǎn)換器轉(zhuǎn)換的類型不同,這時候我們需要加入另一個屬性index

<!-- User有個四參構(gòu)造,我們通過constructor-arg一個一個對應(yīng)構(gòu)造參數(shù)進行值的注入 --><bean class='edu.xalead.User'> <constructor-arg value='M' index='3'/> <constructor-arg value='zhangsan' index='1'/> <constructor-arg value='1111'/ index='0'> <constructor-arg value='20' index='2'/></bean>

那什么時候使用構(gòu)造注入呢?當我們自己定義一個構(gòu)造函數(shù)的時候使用構(gòu)造注入

public class User { private int id; private String name; private int age; private String sex; private String birthday;//自定義構(gòu)造函數(shù) public User(int id , String name){this.id = id;this.name = name; }}

<bean class='edu.xalead.User'><constructor-arg value='18'/><constructor-arg value='張三'/> </bean>

這個時候就不能使用set注入,他會報錯,即使你寫出全參構(gòu)造函數(shù)也不行

淺談Spring Bean的基本配置

五、Array注入(數(shù)組注入)

private String[] photos;

<property name='photos'><array> <value>1.jpg</value> <value>2.jpg</value> <value>3.jpg</value></array></property>六、List注入

private List<String> list;

<property name='list'><list> <value>a</value> <value>b</value> <value>c</value></list></property>七、Set注入

private Set<String> set;

<property name='set'><set> <value>a</value> <value>b</value> <value>c</value></set></property>八、Map注入

private Map<Integer,String> map

<property name='map'><map>//第一種寫法 <entry key='1' value='a'/> //第二種寫法 <entry key='2'> <value>b</value> </entry> <entry key='3' value='c'/> </map></property>九、Property注入

private Properties prop;

<property name='prop'> <props><prop key='4432'>42341231</prop><prop key='54353'>5464564</prop><prop key='9865'>2659846</prop> </props></property>

到此這篇關(guān)于淺談Spring Bean的基本配置的文章就介紹到這了,更多相關(guān)Spring Bean的配置內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲网址在线观看 | 91精品国产91久久久久久不卞 | 超碰网址| 日本三级全黄三级三级三级口周 | 欧美日高清 | 黄色国产视频 | 亚洲综合色视频在线观看 | 欧美激情视频一区二区三区在线播放 | 日韩有码一区 | 久久精彩视频 | 亚洲 自拍 另类 欧美 丝袜 | 狠狠视频| 亚洲欧美一区二区三区在线 | 国产在线观看一区二区三区 | 中文字幕日本一区二区 | 欧美国产精品一区二区 | 久久99精品久久久久 | 国产日韩欧美激情 | 99re99| 成人伊人 | 久久亚洲视频 | 久久久久国产精品 | 国产高清视频在线观看 | 91 在线| 欧美日韩免费视频 | 国产免费一区二区 | 欧美成视频在线观看 | 日本又色又爽又黄的大片 | 射欧美| av高清毛片 | 精品国产乱码久久久久久牛牛 | 成人免费观看男女羞羞视频 | 久久精品成人 | 91成人 | 亚州中文| 亚洲欧美久久 | 国产精品免费一区二区 | 国产精品日韩一区 | 精品久久久久久久久久久久 | 日韩色图在线观看 | 欧美free性|