亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

spring ioc di 怎么理解

spring ioc di 怎么理解

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

2 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

ioc即控制反轉,粗淺點理解就是將創建bean(對象)的權利交予spring容器,讓spring去控制。spring怎么控制-通過配置文件
至于使用 一個簡單的例子:比如我有一個UserService接口和他的一個實現類UserServiceImpl,現在要得到UserService的一個實例,
就到spring的配置文件(xml)中配置相關信息。

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

這樣就得到了一個UserService的實例,在這個過程中我們自己始終都沒有new過一個對象,該過程都讓spring完成了!

di: 依賴注入 可以分開理解
d-依賴:在A類中有B類作為A類的一個類屬性,說A類依賴B類,形成依賴關系;
i-注入:簡單點理解其實就是setter注入;
想想你學java基礎面向對象封裝時,定義一個Person類,類里面有很多屬性,要給這些屬性賦值是不是需要先new Person();
然后再用對象的實例person.setxx("value")這樣去給屬性賦值,這個過程你就可以理解成注入; 
回到spring中:依賴注入也就是將注入的任務交給spring
有一個Person接口和他的實現類PersonImpl,PersonImpl里有另一個接口Sleep做為PersonImpl的類屬性
public interface Person{

}
public class PersonImpl implements Person{

    private Sleep sleep;

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

配置信息,實現注入
<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的實例注入到了PersonImpl中的類屬性中了

一個bean標簽就時創建一個實例
property就是設置屬性,name屬性的值就是類屬性名,ref屬性的值就是作為類屬性那個類bean標簽里的id;

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


查看完整回答
反對 回復 2018-11-03
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

ioc控制反轉,,Ioc意味著將你設計好的對象交給容器控制,而不是傳統的在你的對象內部直接控制;
DI—Dependency Injection,即“依賴注入”, Java 1.3之后一個重要特征是反射(reflection),它允許程序在運行的時候動態的生成對象、執行對象的方法、改變對象的屬性,spring就是通過反射來實現注入的。

查看完整回答
反對 回復 2018-11-03
  • 2 回答
  • 0 關注
  • 899 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號