zoukankan      html  css  js  c++  java
  • spring重点一:处理对象创建时间 个数以及方式

    /**

     * 1) 对象创建: 单例/多例(个数)

     * scope="singleton", 默认值, 即 默认是单例service/dao/工具类】

     *  scope="prototype", 多例; Action对象】

     *

     * 2) 什么时候创建?(时间)

     *   scope="prototype"  在用到对象的时候,才创建对象。

     *    scope="singleton"  在启动(容器初始化之前), 就已经创建了bean,且整个应用只有一个。

     * 3)是否延迟创建(时间)

     *   lazy-init="false"  默认为false,  不延迟创建,即在启动时候就创建对象

     *   lazy-init="true"   延迟初始化, 在用到对象的时候才创建对象

     *    (只对单例有效)

     * 4) 创建对象之后,初始化/销毁

     *   init-method="init_user"       【对应对象的init_user方法,在对象创建爱之后执行 】

     *    destroy-method="destroy_user"  【在调用容器对象的destriy方法时候执行,(容器用实现类)

     */

    @Test

    public void testIOC() throws Exception {

    // 得到IOC容器对象  【用实现类,因为要调用销毁的方法】

    ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/a_hello/applicationContext.xml");

    System.out.println("-----容器创建-----");

     

    // 从容器中获取bean

    User user1 = (User) ac.getBean("user");

    User user2 = (User) ac.getBean("user");

     

    System.out.println(user1);

    System.out.println(user2);

     

    // 销毁容器对象

    ac.destroy();

    }

     SpringIOC容器

     创建对象

    SpringIOC容器,是spring核心内容。

    作用: 创建对象 & 处理对象的依赖关系

    IOC容器创建对象:

    对象创建的方式:

    调用无参构造

    调用有参构造

    工厂创建对象

      工厂:非静态方法调用该

      工厂:静态方法调用

      

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns:p="http://www.springframework.org/schema/p"

        xmlns:context="http://www.springframework.org/schema/context"

        xsi:schemaLocation="

            http://www.springframework.org/schema/beans

            http://www.springframework.org/schema/beans/spring-beans.xsd

            http://www.springframework.org/schema/context

            http://www.springframework.org/schema/context/spring-context.xsd">

     

    <!-- ###############对象创建############### -->

     

    <!-- 1. 默认无参数构造器

    <bean id="user1" class="cn.itcast.b_create_obj.User"></bean>

    -->

     

    <!-- 2. 带参数构造器 -->

    <bean id="user2" class="cn.itcast.b_create_obj.User">

    <constructor-arg index="0" type="int" value="100"></constructor-arg>

    <constructor-arg index="1" type="java.lang.String" value="Jack"></constructor-arg>

    </bean>

     

    <!-- 定义一个字符串,值是"Jack" ;  String s = new String("jack")-->

    <bean id="str" class="java.lang.String">

    <constructor-arg value="Jacks"></constructor-arg>

    </bean>

    <bean id="user3" class="cn.itcast.b_create_obj.User">

    <constructor-arg index="0" type="int" value="100"></constructor-arg>

    <constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg>

    </bean>

     

     

    <!-- 3. 工厂类创建对象 -->

    <!-- # 3.1 工厂类,实例方法 -->

    <!-- 先创建工厂 -->

    <bean id="factory" class="cn.itcast.b_create_obj.ObjectFactory"></bean>

    <!-- 在创建user对象,用factory方的实例方法 -->

    <bean id="user4" factory-bean="factory" factory-method="getInstance"></bean>

     

     

    <!-- # 3.2 工厂类: 静态方法 -->

    <!--

    class 指定的就是工厂类型

    factory-method  一定是工厂里面的静态方法

     -->

    <bean id="user" class="cn.itcast.b_create_obj.ObjectFactory" factory-method="getStaticInstance"></bean>

     

    </beans>      

      

  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/8252433.html
Copyright © 2011-2022 走看看