Spring IoC的主要實(shí)現(xiàn)策略

Hollywood Principle : Don't call us , we call you。 好萊塢原則:不要打電話給我,我會(huì)打電話給你。

反轉(zhuǎn)控制:其相關(guān)依賴或數(shù)據(jù)由別的服務(wù)提供,而非自己讀取,類似于響應(yīng)式編程,響應(yīng)式編程就是非主動(dòng)拉取而是以推送獲取的方式(即當(dāng)一個(gè)事物發(fā)生狀態(tài)變化時(shí),其他事物將被相應(yīng)地通知和更新)。

Spring IoC的主要實(shí)現(xiàn)策略

  1. Service locator pattern:服務(wù)定位模式。Java EE 中使用的模式,一般通過 JNDI 技術(shù)獲取Java EE組件,如獲取 EJB 組件,或者DataSource相關(guān)數(shù)據(jù)源。
  2. Dependency injection:依賴注入,主要包含以下幾種方式,
    • 構(gòu)造器注入
    • 參數(shù)注入
    • Setter注入
    • 接口注入

依賴注入不僅在 Spring Framework 中被使用,在EJB 3.0 里也被運(yùn)用

  1. ContextUalized lookup:上下文的依賴查詢。 Spring 參考了Java Beans中的實(shí)現(xiàn)方式,Java beans 中有一個(gè)通用的上下文 beancontext,既可以傳輸bean,又可以管理bean的層次 。
java.beans.beancontext:The BeanContext acts a logical hierarchical container for JavaBeans.充當(dāng)JavaBean的邏輯層次結(jié)構(gòu)容器。

例如:Spring 對(duì) jdbc 的實(shí)現(xiàn)用到 JdbcTemplate,JdbcTemplate這樣的實(shí)現(xiàn)里使用了一種類似于StatementCallback,這種callback的回調(diào)方法幫助我們實(shí)現(xiàn)的更為抽象,當(dāng)實(shí)現(xiàn)這樣的接口時(shí),不需要關(guān)心callback從哪來,這樣也是一種反轉(zhuǎn)控制,即傳統(tǒng)的 jdbc 直接調(diào)用 sql 命令的執(zhí)行其實(shí)是個(gè)相反的操作。

    @Override
 public void execute(final String sql) throws DataAccessException {
     if (logger.isDebugEnabled()) {
         logger.debug("Executing SQL statement [" + sql + "]");
     }

     /**
      * Callback to execute the statement.
      */
     class ExecuteStatementCallback implements StatementCallback<Object>, SqlProvider {
         @Override
         @Nullable
         public Object doInStatement(Statement stmt) throws SQLException {
             stmt.execute(sql);
             return null;
         }
         @Override
         public String getSql() {
             return sql;
         }
     }

     execute(new ExecuteStatementCallback());
 }
  1. Strategy Design patten:策略模式
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容