91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring依賴注入的兩種方式是什么

發布時間:2022-06-09 10:00:24 來源:億速云 閱讀:246 作者:zzz 欄目:開發技術

今天小編給大家分享一下Spring依賴注入的兩種方式是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    一、依賴注入方式

    思考:向一個類中傳遞數據的方式有幾種?

    • 普通方法(set方法)

    • 構造方法

    思考:依賴注入描述了在容器中建立bean與bean之間依賴關系的過程,如果bean運行需要的是數字或字符串呢?

    • 引用類型

    • 簡單類型(基本數據類型與String)

    依賴注入方式:

    setter注入

    • 簡單類型

    • 引用類型

    構造器注入

    • 簡單類型

    • 引用類型

    二、setter注入

    引用類型

    在bean中定義引用類型屬性并提供可訪問的set方法

    import com.itheima.dao.BookDao;
    import com.itheima.service.BookService;
     
    public class BookServiceImpl implements BookService {
        private BookDao bookDao;
     
        public void save() {
            System.out.println("book service save ...");
            bookDao.save();
        }
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
    }

    配置中使用property標簽ref屬性注入引用類型對象

    <!--注入引用類型-->
        <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
            <!--property標簽:設置注入屬性-->
            <!--name屬性:設置注入的屬性名,實際是set方法對應的名稱-->
            <!--ref屬性:設置注入引用類型bean的id或name-->
            <property name="bookDao" ref="bookDao"/>
            <property name="userDao" ref="userDao"/>
        </bean>

    簡單類型

    BookDaoImpl實現類:

    在bean中定義引用類型屬性并提供可訪問的set方法

    import com.itheima.dao.BookDao;
     
    public class BookDaoImpl implements BookDao {
     
        private String databaseName;
        private int connectionNum;
     
        //setter注入需要提供要注入對象的set方法
        public void setConnectionNum(int connectionNum) {
            this.connectionNum = connectionNum;
        }
     
        //setter注入需要提供要注入對象的set方法
        public void setDatabaseName(String databaseName) {
            this.databaseName = databaseName;
        }
     
        public void save() {
            System.out.println("book dao save ..." + databaseName + "," + connectionNum);
        }
    }

    applicationContext.xml配置:

    配置中使用property屬性value注入簡單類型對象

    <!--注入簡單類型-->
        <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
            <!--property標簽:設置注入屬性-->
            <!--name屬性:設置注入的屬性名,實際是set方法對應的名稱-->
            <!--value屬性:設置注入簡單類型數據值-->
            <property name="connectionNum" value="100"/>
            <property name="databaseName" value="mysql"/>
        </bean>

    三、構造器注入

    引用類型

    在bean中定義引用類型屬性并提供可訪問的構造方法

    public class BookServiceImpl implements BookService{
        private BookDao bookDao;
        private UserDao userDao;
     
        public BookServiceImpl(BookDao bookDao, UserDao userDao) {
            this.bookDao = bookDao;
            this.userDao = userDao;
        }
    }

    配置中使用constructor-arg標簽ref屬性注入引用類型對象

    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
     
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
            <constructor-arg name="userDao" ref="userDao"/>
            <constructor-arg name="bookDao" ref="bookDao"/>
        </bean>

    簡單類型

    在bean中定義引用類型屬性并提供可訪問的構造方法

    public class BookDaoImpl implements BookDao {
        private String databaseName;
        private int connectionNum;
     
        public BookDaoImpl(String databaseName, int connectionNum) {
            this.databaseName = databaseName;
            this.connectionNum = connectionNum;
        }
    }

    配置中使用constructor-arg標簽ref屬性注入引用類型對象

    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
            <!--根據構造方法參數名稱注入-->
            <constructor-arg name="connectionNum" value="10"/>
            <constructor-arg name="databaseName" value="mysql"/>
     </bean>

    參數適配(了解)

    配置中使用constructor-arg標簽type屬性注入引用類型對象

    <!--解決形參名稱的問題,與形參名不耦合-->
        <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
            <!--根據構造方法參數類型注入-->
            <constructor-arg type="int" value="10"/>
            <constructor-arg type="java.lang.String" value="mysql"/>
        </bean>

    配置中使用constructor-arg標簽index屬性注入引用類型對象

     <!--解決參數類型重復問題,使用位置解決參數匹配-->
        <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
            <!--根據構造方法參數位置注入-->
            <constructor-arg index="0" value="mysql"/>
            <constructor-arg index="1" value="100"/>
        </bean>

    四、依賴注入方式選擇

    1、強制依賴使用構造器進入,使用setter注入有概率不進入注入導致null對象出現

    2、可選依賴使用setter注入進行,靈活性強

    3、Spring框架倡導使用構造器,第三方框架內部大多數采用構造器注入的形式進行數據初始化,相對嚴謹

    4、如果有必要可以兩者同時使用,使用構造器注入完成強制依賴的注入,使用setter注入完成可依賴的注入

    5、實際開發過程中還要根據實際情況分析,如果受控對象沒有提供setter方法就必須使用構造器注入

    6、自己開發的模塊推薦使用setter注入

    以上就是“Spring依賴注入的兩種方式是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    平利县| 宁波市| 江山市| 聊城市| 奉新县| 沁水县| 双流县| 余姚市| 乐山市| 普洱| 长沙市| 禄劝| 金山区| 错那县| 通渭县| 龙江县| 建德市| 苍南县| 木兰县| 黄山市| 岳西县| 连城县| 安庆市| 云和县| 博客| 镇坪县| 广元市| 兰考县| 赣榆县| 白山市| 平塘县| 康平县| 泾川县| 繁昌县| 额敏县| 莱州市| 昭苏县| 唐山市| 津市市| 宜君县| 松江区|