日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring依赖注入和控制反转

發布時間:2023/12/3 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring依赖注入和控制反转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1、依賴注入
    • 1.1、依賴注入和控制反轉的概念
    • 1.2、依賴注入的實現方式
    • 1.3、控制反轉的具體實現
    • 1.4、依賴注入的具體實現
    • 1.5、依賴注入和控制反轉總結

1、依賴注入

1.1、依賴注入和控制反轉的概念

依賴注入(Dependency Injection, 簡稱DI)與控制反轉(IoC)的含義相同,只不過這兩個稱呼是從兩個角度描述的同一個概念。

當某個Java對象(調用者)需要調用另一個Java對象(被調用者,即被依賴對象)時,在傳統模式下,調用者通常會采用“new被調用者”的代碼方式來創建對象,如圖所示。這種方式會導致調用者與被調用者之間的耦合性增加,不利于后期項目的升級和維護。

在使用Spring框架之后,對象的實例不再由調用者來創建,而是由Spring 容器來創建,Spring容器會負責控制程序之間的關系,而不是由調用者的程序代碼直接控制。這樣,控制權由應用代碼轉移到了Spring 容器,控制權發生了反轉,這就是Spring的控制反轉。

從Spring容器的角度來看,Spring 容器負責將被依賴對象賦值給調用者的成員變量,這相
當于為調用者注入了它依賴的實例,這就是Spring的依賴注入。

1.2、依賴注入的實現方式

  • 屬性setter方法注入;
  • 構造方法注入;
    • 屬性setter方法注入:指Spring容器使用setter 方法注入被依賴的實例。通過調用無參
      構造器或無參靜態工廠方法實例化Bean后,調用該Bean的setter 方法,即可實現基于setter
      方法的依賴注入。
    • 構造方法注入:指Spring容器使用構造方法注入被依賴的實例。基于構造方法的依賴注
      入通過調用帶參數的構造方法來實現,每個參數代表著一個依賴。

    1.3、控制反轉的具體實現

    1.接口

    package com.nynu.qdy.ioc; public interface UserDao{public void say() ; }

    2.接口實現類

    package com.nynu.qdy.impl;import com.nynu.qdy.ioc.UserDao;public class UserDaolmpl implements UserDao{public void say() {System.out.println("userDao say hello World!");} }

    3.Spring的配置文件applicationContext.xml

    <?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 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"><!-- 將指定類配置給Spring,讓Spring創建其對象的實例 --><!-- 這是SpringIOC容器的控制反轉機制 --><bean id="userDao" class="com.nynu.qdy.impl.UserDaolmpl"> </beans>

    4.測試類

    package com.nynu.qdy.ioc;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestloC {@SuppressWarnings("resource")public static void main(String[] args) {// 1.初始化spring容器,加載配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");// 2.通過容器獲取userDao容器UserDao userDao = (UserDao) applicationContext.getBean("userDao");// 3.調用實例中的方法userDao.say();} }

    5.結果

    userDao say hello World!

    1.4、依賴注入的具體實現

    1.接口

    package com.nynu.qdy.ioc;public interface UserService {public void say(); }

    2.實現類

    package com.nynu.qdy.impl;import com.nynu.qdy.ioc.UserDao; import com.nynu.qdy.ioc.UserService;public class UserServiceImpl implements UserService {// 生命UserDao屬性private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}// 實現接口中的方法public void say() {// 調用userDao中的say()方法,并執行輸出語句this.userDao.say();System.out.println("userService say hello WOrld!");}}

    3.配置文件applicationContext.xml

    <!--添加一個id為userService的實例 --><!-- 將id為userDao的Bean實例注入到userService實例中 --></bean><bean id="userService" class="com.nynu.qdy.impl.UserServiceImpl"><!-- 完成屬性賦值 --><property name="userDao" ref="userDao" /></bean>

    4.測試類

    package com.nynu.qdy.ioc;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestDI {@SuppressWarnings("resource")public static void main(String[] args) {// 1.初始化spring容器,加載配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");// 2.通過容器獲取UserService實例UserService userService = (UserService) applicationContext.getBean("userService");// 3.調用實例中的say()方法userService.say();} }

    5.結果

    userDao say hello World! userService say hello WOrld!

    1.5、依賴注入和控制反轉總結

    這里是對ioc和di的總結和理解!

    總結

    以上是生活随笔為你收集整理的Spring依赖注入和控制反转的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。