zoukankan      html  css  js  c++  java
  • Spring容器

     Spring中容器
    1,BeanFactory
        BeanFactory是Spring中提供的最简单,最基本的容器;这个容器只提供了IoC/DI的功能;

    2,ApplicationContext: 也是一个接口, 继承了BeanFactory, ApplicationContext容器功能更加全面
        * expression: Spring实现的EL表达式, 允许在配置文件中使用EL表达式,但是一般不会这么用
        * context


    对比:
    BeanFactory:
        1,容器启动的时候不会实例化对象
    ApplicationContext:
        1,容器启动的时候会实例化对象,
            可以通过在bean标签的 `lazy-init`属性可以让容器不会去实例化
            也可以在beans中添加属性`default-lazy-init`


    scope标签:

    默认情况下,每一个配置在bean中的对象都是单例的, 如果想让它不是单例的:
        在bean的标签中添加一个属性`scope`, 可以限定bean对象的生命作用域
        取值:
            1)singleton: 单例,默认值
                Spring 容器默认启动的时候会创建一个对象
            2)prototype: 原型(模式, 当每一次获取每个对象的时候都是获取的这个对象的镜像),线程安全
                Spring 容器默认启动的时候不会实例化该对象, 只有用的时候才去实例化
                当创建对象之后Spring容器也就不会去管理这个对象, 需要我们自己实现bean的销毁的方法

    给字段赋值:

    1、直接在xml里面给字段赋值

    1  <!-- 将上面的BeanFactory工厂导入进这个IoC里面 -->
    2     <bean id="DIBean" class="com.gxxy.spring.test.kp03.HelloDIBean" >
    3         <property name="name" value="范剑波"></property>
    4         <property name="age" value="16"></property>
    5         <property name="fees" value="565.0"></property>
    6         <property name="bean" ref="bean1"></property>

    2、使用构造器来给字段赋值:

    ①直接赋值:

    ②使用下标赋值:

    ③使用类型赋值:

    ④使用字段名赋值:

     1  <bean id="constrstorBean" class="com.gxxy.spring.test.kp04_constrstor.HelloDIBean" >
     2         <!-- 直接赋值 -->
     3         <constructor-arg value="jjjj"></constructor-arg>
     4         <constructor-arg value="12"></constructor-arg>
     5         <constructor-arg value="23.0"></constructor-arg>
     6         <!-- 使用下表赋值
     7         <constructor-arg value="12" index="1"></constructor-arg>
     8         <constructor-arg value="jjjj" index="0"></constructor-arg>
     9         <constructor-arg value="23.0" index="2"></constructor-arg> -->
    10         <!-- 使用类型赋值
    11         <constructor-arg value="12" type="Integer"></constructor-arg>
    12         <constructor-arg value="jjjj" type="String"></constructor-arg>
    13         <constructor-arg value="23.0" type="Double"></constructor-arg> -->
    14         <!-- 使用字段名赋值
    15         <constructor-arg value="12" name="age"></constructor-arg>
    16         <constructor-arg value="jjjj" name="name"></constructor-arg>
    17         <constructor-arg value="23.0" name="fees"></constructor-arg> -->
    18     </bean>

    注意:使用构造器来赋值,在类里面必须要有相应的构造器,同时还要有无参构造器,避免javaBean规范带来的错误

  • 相关阅读:
    腾讯2014 笔试
    iOS 并发编程之 Operation Queues
    iOS 架构
    loadView and viewDidLoad?
    Referring to weak self inside a nested block
    Weakify和strongify探究
    iOS开发的最佳实践
    iOS 书籍
    Object-C非正式协议与正式协议的区别
    解决element-ui中el-menu组件作为vue-router模式在刷新页面后default-active属性与当前路由页面不一致问题的方法
  • 原文地址:https://www.cnblogs.com/nice6/p/6637036.html
Copyright © 2011-2022 走看看