IoC和DI的区别
首先我們一般回答面試題都是先說出他們兩個是什么,然后在說他們之間的區(qū)別.嘻嘻重點在最后后面
1.IoC(Inverse of Control 反轉(zhuǎn)控制): 將對象創(chuàng)建權(quán)利交給Spring工廠進(jìn)行管理。
理解IoC
2.DI:Dependency Injection,翻譯過來就是:依賴注入。是指spring框架在創(chuàng)建bean對象時,動態(tài)的將依賴對象注入到bean組件中
原來在使用Spring之前: Class UserServiceImpl{ private String msg;public void setMsg( String msg ){ this. msg = msg; } } UserService userService = new UserServiceImpl(); userService.setMsg(“世界”); 使用了Spring之后。我們只需要使用xml配置,或者注解配置。就可以直接注入。擴(kuò)展UserServiceImpl 添加msg屬性及其setter方法 /*** UserService接口的實現(xiàn)類* @author joedy**/ public class UserServiceImpl implements UserService {private String msg;@Overridepublic void sayHello() {System.out.println("hello " + msg);}// UserServiceImpl的對象,依賴于String類型的msg數(shù)據(jù)public void setMsg(String msg) {this.msg = msg;}} 通過配置屬性注入 通過property標(biāo)簽注入依賴數(shù)據(jù): <?xml version="1.0" encoding="UTF-8"?> <!-- xml配置的約束頭信息 --> <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 http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置使用哪個實現(xiàn)類,對UserService接口進(jìn)行實例化 --><!-- id:唯一標(biāo)識,通過它獲取配置的實現(xiàn)類。 class:配置UserService這個實現(xiàn)類 --><bean id="userService" class="com.atguigu.spring.quickstart.UserServiceImpl"><!-- spring框架初始化UserService對象后,自動調(diào)用該對象的setMsg方法,注入依賴數(shù)據(jù):msg --><property name="msg" value="世界"></property></bean></beans> 測試 傳統(tǒng)方式需要修改代碼,spring方式不需要修改任何代碼: public class UserServiceTest {@Testpublic void test1() {// 傳統(tǒng)寫法,緊密耦合UserServiceImpl userService = new UserServiceImpl();// 手動注入userService對象依賴的msg數(shù)據(jù)userService.setMsg("世界");userService.sayHello();}@Testpublic void test2() {// 反射 + 工廠 + 配置文件,實例化UserService接口對象ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");// 通過工廠根據(jù)配置名稱獲取實例化對象UserService userService = (UserService) context.getBean("userService");userService.sayHello();}}IoC和DI的區(qū)別?
IoC:控制反轉(zhuǎn),指將對象的創(chuàng)建權(quán),反轉(zhuǎn)到spring容器。
DI:依賴注入,指在創(chuàng)建對象的過程中,將對象依賴的屬性通過配置進(jìn)行注入。DI的實現(xiàn)依賴于IoC,先有控制反轉(zhuǎn)才有依賴注入
?
總結(jié)
- 上一篇: 海报设计如何做好文案超多的海报
- 下一篇: P23 (**) Extract a g