• Spring容器


    更多内容参见个人技术博客,无广告欢迎关注

    (1)什么是Spring容器?

    Spring容器(Spring框架中的一个模块)帮我们创建对象、并且管理对象之间依赖关系。

     

    (2)如何启动Spring容器?

    step1.导包。

    mavan所有的包都可以在 https://mvnrepository.com/ 中找到,并且有示例

    <dependency>
    
      <groupId>org.springframework</groupId>
    
      <artifactId>spring-webmvc</artifactId>
    
      <version>3.2.8.RELEASE</version>
    
    </dependency>

    step2.添加Spring配置文件。

     

    配置文件用来告诉容器,如何创建对象、如何建立对象之间的依赖关系等等。

     

     

     

    step3.启动容器。

    /*
    
    * 启动Spring容器。
    
    * ApplicationContext是一个接口,定义了Spring
    
    * 容器的基本功能。
    
    * ClassPathXmlApplicationContext是一个实现了
    
    * ApplicationContext接口的类,该类会依据类路径
    
    * 来查找Spring配置文件,然后启动容器。
    
    */
    
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    
    System.out.println("context:"  + context);

     

    (3)创建对象

    1)方式一 使用无参构造器。

    step1.为类添加无参构造器(或者缺省构造器)。

    step2.在配置文件当中,使用bean元素进行配置。

    使用无参构造器创建对象。其中,id属性值要求唯一,class属性要写类的完整的名字。

    <bean id="stu1" class="first.Student"/>

    step3.启动Spring容器,调用容器提供的getBean方法来获得对象。

    Student stu = ac.getBean("stu1",Student.class);

     

    2)方式二 使用静态工厂方法。(了解)

    使用静态工厂方法来创建对象

    factory-method属性用来指定静态方法名,容器会调用该类的静态方法来创建对象。以下配置,容器会调用Calendar.getInstance()方法,该方法会返回一个对象。

    <bean id="cal1" class="java.util.Calendar" factory-method="getInstance"/>

     

    3)方式三 使用实例工厂方法。(了解)

    使用实例工厂方法来创建对象。

    factory-bean属性值是一个bean的id,factory-method属性指定方法名。

    以下配置,容器会调用id为cal1的bean的getTime方法。

    注:bean指的是由容器所管理的对象。

    <bean id="time1" factory-bean="cal1" factory-method="getTime"/>

     

    (4)作用域

    容器默认情况下,对于某个bean元素,只会创建一个实例。

    可以修改bean的作用域,将作用域设置为"prototype",容器就会创建多个实例。

    scope属性用来设置bean的作用域。缺省值是"singleton",只会创建一个实例;

    如果值为"prototype",则会创建多个实例(每调用一次getBean方法,就会创建一个)。

    singleton:单例。

    prototype:原型。

    <bean id="sb1" class="basic.ScopeBean" scope="prototype"/>

     

    (5)生命周期

    容器在创建好相应的对象之后,会调用该对象的初始化方法,在销毁该对象之前,会调用该对象的销毁方法。

    可以使用init-method属性和destroy-method属性来指定初始化方法和销毁方法的名称。

    init-method属性用于指定初始化方法名。

    destroy-method属性用于指定销毁方法名。

    注:容器在删除对象之前,会先调用该对象的销毁方法。 只有作用域为singleton的bean,销毁方法才会执行。

    <bean id="ms1" class="basic.MessageService" init-method="init" destroy-method="destroy" scope="singleton"/>

     

    (6)延迟加载

    默认情况下,容器启动之后,会将所有作用域为"singleton"的bean实例化。

    可以将lazy-init属性值设置为true,容器启动之后,不再创建这些实例了(只有调用了getBean方法才会创建) 

    lazy-init属性用来设置是否延迟加载,如果值为true,表示延迟加载。

    <bean id="lb1" class="basic.LazyBean" lazy-init="true"/>

  • 相关阅读:
    null和undefined的区别
    【面试】前端面试题总结一(css)
    【js基础类】火狐的滚动事件
    【Vue】provide和inject
    React学习:react-router-dom-主要组件
    React学习:组合VS继承
    React学习:状态提升
    React学习:form表单
    unity+ARKit 捕捉表情录制动画 表情动画与人形骨骼动画融合
    Unity导入模型材质球无法编辑属性解决方法
  • 原文地址:https://www.cnblogs.com/wood-life/p/10288315.html
Copyright © 2020-2023  润新知