zoukankan      html  css  js  c++  java
  • 4-13 依赖注入(1)

    依赖注入是angular中特别基础和重要的概念。是从java等后端语言借鉴过来的。

    之前我们已经遇到了。在构造函数内声明变量,注入

    要写可以被人注入的类,就要加注解

    那么怎么new出来来呢。是在provider这个数组里。
    provider会把这个模块,想要提供的服务,做一些标识。一个是标识符,一个是要怎样构造这个东西。


    声明一个类Product

    创建订单类,构造函数内声明product必须要New一个Product对象出来。

    假设两个类是两个不同的人写的。后来又给Product加了一个color

    那么引用它的地方,在new product的时候也要修改


    在构造里面传进来

    但是终究还是要有个地方把它new 出来。


    表示这个类是可注入的。

    然后把构造的东西,交给系统来处理。在angular中,我们可以使用Injector

    在里面要提供一个Provider数组。

    在provider数组里面,用来描述你这些东西怎么去创建。
    比如说这个Product。
    下面provide这是一个标识符。

    标识符,我们可以使用useClass,使用类Product

    有时候偶需要做特殊处理,我们就用useFactory,工厂返回一个,

    返回一个New的 Product
     
    他看到标识Product那么返回的就是New 出来的Product大米手机。

    我们拿angular的Inject实际上是把所有的对象都已经构造好了。而且默认是单例的,所有类默认只有一份,
    大部分时候注入的时候,我们需要的是一个服务。服务大部分情况下是不需要再new一个实例

    如果我们自己在上面new出来一个东西 我们还可以使用useExisting。用我们现存的类放在这个实例里面。
    useValue:有的时候我们不需要注入一个类。我们就想得到某一个配置或者属性,这个时候我们可以用useValue。因为我们没有没办法把一个String当做一个类型去Provider出来。所以有的时候我们需要另外一种方式去提供,

    还有一个属性deps

    描述Product里面的依赖性。如果你还依赖Product的其他东西,那么你就需要在这里数组里面提供一下。

    声明订单的

    订单的类依赖于Product

    从里面取product

    前端页面输出 。打印出来的就是这个产品。

    再把订单打印出来



    在它里面就是product


    我们平时在使用的时候,不需要这样手动的写出来

    angular给我提供了更为简洁的方式

    我们只需要在类上加注解

    然后直接在模块的providers数组内加上这个类就可以了。

    如果是Factory的这种

    那就必须要自己声明一下

     

    结束

  • 相关阅读:
    Eclipse的Tomcat插件安装
    Struts1.2 struts-config.xml配置详解
    JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    dede 忘记密码在数据库中修改方法
    如何将XML文件中的数据传送并保存在关系数据库中
    lamp
    开发人员必读的11本最具影响力书籍
    org.apache.commons.lang.StringUtils类
    B. Jzzhu and Sequences
    线段树——习题、lazy解析
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/13574895.html
Copyright © 2011-2022 走看看