Spring--Bean创建细节

一.对象创建单例/多例

scope="singleton", 默认值, 即 默认是单例 【service/dao/工具类】
scope="prototype", 多例; 【Action对象】

读取创建user对象:

public class Test2 {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
    @Test
    public void test1(){
        User user = (User) applicationContext.getBean("user");
        User user2 = (User) applicationContext.getBean("user");
        System.out.println(user);
        System.out.println(user2);
    }
}
  • 1.单例配置文件:

Spring--Bean创建细节_第1张图片
image.png
  • 2.多例配置文件

Spring--Bean创建细节_第2张图片

二.什么时候创建?

scope="singleton" 单例 在启动(容器初始化之前), 就已经创建了bean,且整个应用只有一个。
scope="prototype" 多例 在用到对象的时候,才创建对象。

  • 1.单例配置文件(容器创建之前就已经创建):

Spring--Bean创建细节_第3张图片
  • 2.多例配置文件()

Spring--Bean创建细节_第4张图片

三 是否延迟创建

lazy-init="false" 默认为false, 不延迟创建,即在启动时候就创建对象
lazy-init="true" 延迟初始化, 在用到对象的时候才创建对象(只对单例有效)

  • 1.单例配置文件(容器创建之前就已经创建):
 
Spring--Bean创建细节_第5张图片
image.png

四. 创建对象之后,初始化/销毁

init-method="init_user" 【对应对象的init_user方法,在对象创建爱之后执行 】
destroy-method="destroy_user" 【在调用容器对象的destriy方法时候执行,(容器用实现类)】

user.java

package com.huan.Bean;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
public class User {
    private int id;
    private String username;
    private String password;
    public User(){
        System.out.println("创建user对象");
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    public void init_user(){
        System.out.println("在对象创建时访问该方法");
    }
    public void destroy_user(){
        System.out.println("在对象销毁时执行");
    }
}

配置文件

        

读取创建user对象:

public class Test2 {
    @Test
    public void test1(){
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
        System.out.println("创建容器");
        User user = (User) applicationContext.getBean("user");
        User user2 = (User) applicationContext.getBean("user");
        System.out.println(user);
        System.out.println(user2);
        applicationContext.destroy();

    }
}
Spring--Bean创建细节_第6张图片

上一篇:Spring框架入门

文集:Spring框架学习

你可能感兴趣的:(Spring--Bean创建细节)