第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

spring ioc di 怎么理解

spring ioc di 怎么理解

有只小跳蛙 2018-10-16 13:09:01
spring ioc di 怎么理解,怎么使用,為什么會(huì)有它們
查看完整描述

2 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

ioc即控制反轉(zhuǎn),粗淺點(diǎn)理解就是將創(chuàng)建bean(對(duì)象)的權(quán)利交予spring容器,讓spring去控制。spring怎么控制-通過(guò)配置文件
至于使用 一個(gè)簡(jiǎn)單的例子:比如我有一個(gè)UserService接口和他的一個(gè)實(shí)現(xiàn)類(lèi)UserServiceImpl,現(xiàn)在要得到UserService的一個(gè)實(shí)例,
就到spring的配置文件(xml)中配置相關(guān)信息。

<bean id="userServiceId" class="com.csdn.ioc.UserServiceImpl"></bean>
其中class為UserServiceImpl的全限定名,id看測(cè)試類(lèi)applicationContext.getBean("userServiceId", UserService.class)里的userServiceId
測(cè)試類(lèi):
    String xmlPath = "com/csdn/ioc/beans.xml";
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
    UserService userService = applicationContext.getBean("userServiceId", UserService.class);

這樣就得到了一個(gè)UserService的實(shí)例,在這個(gè)過(guò)程中我們自己始終都沒(méi)有new過(guò)一個(gè)對(duì)象,該過(guò)程都讓spring完成了!

di: 依賴注入 可以分開(kāi)理解
d-依賴:在A類(lèi)中有B類(lèi)作為A類(lèi)的一個(gè)類(lèi)屬性,說(shuō)A類(lèi)依賴B類(lèi),形成依賴關(guān)系;
i-注入:簡(jiǎn)單點(diǎn)理解其實(shí)就是setter注入;
想想你學(xué)java基礎(chǔ)面向?qū)ο蠓庋b時(shí),定義一個(gè)Person類(lèi),類(lèi)里面有很多屬性,要給這些屬性賦值是不是需要先new Person();
然后再用對(duì)象的實(shí)例person.setxx("value")這樣去給屬性賦值,這個(gè)過(guò)程你就可以理解成注入; 
回到spring中:依賴注入也就是將注入的任務(wù)交給spring
有一個(gè)Person接口和他的實(shí)現(xiàn)類(lèi)PersonImpl,PersonImpl里有另一個(gè)接口Sleep做為PersonImpl的類(lèi)屬性
public interface Person{

}
public class PersonImpl implements Person{

    private Sleep sleep;

    public void setSleep(Sleep sleep){
            this.sleep = sleep;
    }
}

配置信息,實(shí)現(xiàn)注入
<bean id="person" class="com.csdn.di.PersonImpl">
            <property name="sleep" ref="sleepId"></property>
</bean>
<bean id="sleepId" class="con.csdn.di.SleepImpl"></bean>
這樣就將Sleep的實(shí)例注入到了PersonImpl中的類(lèi)屬性中了

一個(gè)bean標(biāo)簽就時(shí)創(chuàng)建一個(gè)實(shí)例
property就是設(shè)置屬性,name屬性的值就是類(lèi)屬性名,ref屬性的值就是作為類(lèi)屬性那個(gè)類(lèi)bean標(biāo)簽里的id;

至于為什么要用他們,你會(huì)用了,用多了自然就知道為什么了


查看完整回答
反對(duì) 回復(fù) 2018-11-03
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

ioc控制反轉(zhuǎn),,Ioc意味著將你設(shè)計(jì)好的對(duì)象交給容器控制,而不是傳統(tǒng)的在你的對(duì)象內(nèi)部直接控制;
DI—Dependency Injection,即“依賴注入”, Java 1.3之后一個(gè)重要特征是反射(reflection),它允許程序在運(yùn)行的時(shí)候動(dòng)態(tài)的生成對(duì)象、執(zhí)行對(duì)象的方法、改變對(duì)象的屬性,spring就是通過(guò)反射來(lái)實(shí)現(xiàn)注入的。

查看完整回答
反對(duì) 回復(fù) 2018-11-03
  • 2 回答
  • 0 關(guān)注
  • 912 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)