Spring IoC的主要实现策略

Hollywood Principle : Don't call us , we call you。 好莱坞原则:不要打电话给我,我会打电话给你。

反转控制:其相关依赖或数据由别的服务提供,而非自己读取,类似于响应式编程,响应式编程就是非主动拉取而是以推送获取的方式(即当一个事物发生状态变化时,其他事物将被相应地通知和更新)。

Spring IoC的主要实现策略

  1. Service locator pattern:服务定位模式。Java EE 中使用的模式,一般通过 JNDI 技术获取Java EE组件,如获取 EJB 组件,或者DataSource相关数据源。
  2. Dependency injection:依赖注入,主要包含以下几种方式,
    • 构造器注入
    • 参数注入
    • Setter注入
    • 接口注入

依赖注入不仅在 Spring Framework 中被使用,在EJB 3.0 里也被运用

  1. ContextUalized lookup:上下文的依赖查询。 Spring 参考了Java Beans中的实现方式,Java beans 中有一个通用的上下文 beancontext,既可以传输bean,又可以管理bean的层次 。
java.beans.beancontext:The BeanContext acts a logical hierarchical container for JavaBeans.充当JavaBean的逻辑层次结构容器。

例如:Spring 对 jdbc 的实现用到 JdbcTemplate,JdbcTemplate这样的实现里使用了一种类似于StatementCallback,这种callback的回调方法帮助我们实现的更为抽象,当实现这样的接口时,不需要关心callback从哪来,这样也是一种反转控制,即传统的 jdbc 直接调用 sql 命令的执行其实是个相反的操作。

    @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:策略模式
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容