zoukankan      html  css  js  c++  java
  • Spring-IOC

    参考雷丰阳老师的视频

    IOC DI

    IOC :控制反转

    控制:资源的获取方式

        主动式:(要什么资源都自己创建)

        被动式:资源的获取不再由我们自己创建 而是交给一个容器来创建和设置

     

    容器:管理所有的组件(有功能的类):假设BookServlet受容器管理,BookService也受容器管理,容器可以自动探查出哪些组件类需要用到另一组组件类,容器会帮助我们创建BookService对象,赋值进去

     

    DI(Dependency Injection)依赖注入

    容器能知道哪个组件运行的时候,需要用到另外一个类,容器通过反射的形式,将容器中准备好的BookService对象注入(利用反射给属性赋值)到BookServlet

    容器中对象的创建在容器创建完成的时候就已经创建好了

    同一个组件在IOC容器中是单实例的,容器启动完成都已经创建好准备好。

    javaBean的属性名是由getter/setter方法决定的

     

    Ioc

    根据bean的类型从IOC容器中获取bean的实例

    如果ioc容器中这个类型的bean有多个,查找就会报错。

    property 调用get set 方法

     

    通过构造器为bean的属性赋值

    Constructor-arg 的数量和构造器中保持一致

     

    先调用无参构造器创建对象 并调用get/set方法为属性赋值

    直接调用有参构造器

     

    如果省略参数类型,可以指定参数索引 index +参数类型

     

    通过P名称空间为bean赋值 导入p名称空间

    名称空间xml中名称空间是用来防治标签重复的

    1.导入p名称空间 2,写带前缀的标签/属性

     

    正确的为各种属性赋值

    测试使用null用property 中的null标签

    引用类型赋值(引用其他bean 引用严格bean)

    ref 代表引用外面的一个值 引用其他bean

    引用内部bean 可以用bean new 一个bean对象

    集合类型赋值

    <list>  标签内部可以用bean ref

    内部bean 只能内部获取到, 不能通过id

     

    <map> 一个entry 代表一个键值对

    <properties> 类型 所有的key. Value 都是string 

     

     

    Util 名称空间创建集合类型的bean 方便别人引用

    <util:map> 创建的map可以通过id 获取

     

    级联属性赋值.   可以修改属性的属性 原来bean的值会被一起修改

    <property name =“car” ref=“car01”>

    <property name=“car.price” value=“3000”>

     

    通过继承实现bean信息的重用  

    <bean id ="person06"  parent="person05">

     

    abstract 表示这个bean是抽象的,不能获取他的实例  只能被别人继承

     

    bean之间的依赖

    bean的创建顺序 根据bean的配置顺序

    <bean id ="car"depends-on="book,person">

    创建顺序为book person car

     

    bean的作用域 单实例和多实例的bean 

    bean的作用域:指定bean是否单实例 默认 单实例的

    scope 

    singleton:单例 默认

    prototype :多例

     

    单例的对象在容器启动完成之前就已经创建好对象,保存在容器中

    任何时候获取,拿到的是之前创建好的bean

    多实例 容器启动不会创建,获取时会创建一个新的实例

     

    静态工厂和动态工厂

    配置通过静态工厂方法创建的bean 实例工厂方法创建的bean FactoryBean

    bean 的创建默认就是框架利用反射new 出来的bean 实例

    工厂模式 工厂帮我们创建对象

    AirPlaneFactory.getAirPlane(飞机名)

    静态工厂 工厂本身不用创建对象 通过静态方法调用 对象=工厂类.工厂方法名()

    实例工厂 工厂类 工厂类对象 =new 工厂类();

                  工厂类对象.getAirPlane(飞机名)

    <bean id =“airPlane01” class=“com.sundear.demo.factory.AirPlaneStaticFactory”

    Factory-method =“getAirPlane”>

    <constructor-arg value=“李四”></constructor>

    静态工厂(不需要创建工厂本身)指定工厂全类名+工厂方法

     

     

    实例工厂

    Factory-bean 指定当前对象创建使用哪个工厂

    1.先配置出实例工厂对象

    2.配置我们要创建的AirPlane要使用哪个工厂实例  Factory-bean

    3.指定工厂方法

     

    FactoryBean

      只要实现了这个接口的类都是Spring可以认识的工厂类

     Spring 会自动调用工厂方法

    getObject() 工厂方法

    <bean id =“myFactoryExample” class=“com.sundear.demo.MyfactoryExample”>

    获取时创建bean

     

    泛型依赖注入原理:注入一个组件的时候,他的泛型也是参考标准

     

    父类的类型 com.sudear.service.BaseService

    带泛型的父类类型 com.sundear.service.BaseService<com.sundear,bean.Book>

    spring中可以用带泛型的父类的类型来确定子类的类型

     

     

    ioc

    容器:帮我们管理所有的组件

    1.依赖注入:@Autowired 自动赋值

    某个组件如果要使用Spring提供的更多功能(ioc aop),必须加入到容器中

    1,容器启动会查u你更加爱你所有单实例bean

    ioc.getbean(“”) 从容器中获取满足要求的bean

     

     

  • 相关阅读:
    极客时间课程《数据结构与算法之美》笔记09
    Java 学习笔记02
    极客时间课程《数据结构与算法之美》笔记05
    极客时间课程《数据结构与算法之美》笔记04
    极客时间课程《数据结构与算法之美》笔记03
    极客时间课程《数据结构与算法之美》笔记02
    极客时间课程《数据结构与算法之美》01
    spring data jpa 通过对象传参
    生成流水号
    Java 为实体类动态添加属性
  • 原文地址:https://www.cnblogs.com/yxj808/p/15335141.html
Copyright © 2011-2022 走看看