java学习笔记整理JavaEE 学习专题码农的世界

Spring--Bean创建细节

2017-06-24  本文已影响128人  Mr_欢先生

一.对象创建单例/多例

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);
    }
}
<bean id="user" class="com.huan.Bean.User" scope="singleton"></bean>
image.png
<bean id="user" class="com.huan.Bean.User" scope="prototype"></bean>

二.什么时候创建?

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

<bean id="user" class="com.huan.Bean.User" scope="singleton"></bean>
<bean id="user" class="com.huan.Bean.User" scope="prototype"></bean>

三 是否延迟创建

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

 <bean id="user" class="com.huan.Bean.User" scope="singleton" lazy-init="true"></bean>
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("在对象销毁时执行");
    }
}

配置文件

        <bean id="user" class="com.huan.Bean.User" scope="singleton" lazy-init="false"
 init-method="init_user" destroy-method="destroy_user"></bean>

读取创建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框架入门

文集:Spring框架学习

上一篇下一篇

猜你喜欢

热点阅读