一、饿汉式创建优势

工厂创建之后,会将spring配置文件中的所有对象都创建完成(饿汉式)。

提高程序运行效率。避免多次io,减少对象创建时间。(概念接近连接池,一次性创建好,使用时直接获取)

二、生命周期方法

  • 自定义初始化方法:添加“init-method”属性,spring则会在创建对象之后,调用此方法。
  • 自定义销毁方法:添加“destroy-method”属性,spring则会在销毁对象之前,调用此方法。
  • 销毁:工厂的close()方法被调用之后,spring会毁掉所有已创建的单例对象。
  • 分类:singleton对象由spring容器销毁、prototype对象由jvm销毁。

三、生命周期注解

初始化注解、销毁注解

import javax.annotation.postconstruct;
import javax.annotation.predestroy;
 
@postconstruct //初始化 
public void init(){
    system.out.println("init method executed");
}
 
@predestroy //销毁
public void destroy(){
    system.out.println("destroy method executed");
}

四、生命周期阶段

单例bean:singleton

随工厂启动创建 ==》 构造方法 ==》 set方法(注入值) ==》 init(初始化) ==》 构建完成 ==》随工厂关闭销毁

多例bean:prototype

被使用时创建 ==》 构造方法 ==》 set方法(注入值) ==》 init(初始化) ==》 构建完成 ==》jvm垃圾回收销毁

五、用例

user实体类

package com.cos.qf.entity;
 
import javax.annotation.postconstruct;
import javax.annotation.predestroy;
import java.util.*;
 
public class user {
    private integer id;
    private string password;
    private string sex;
    private integer age;
    private date borndate;
    private string[] hobbys;
    private set<string> phones;
    private list<string> names;
    private map<string,string> countries;
    private properties files;
 
 
    @postconstruct //初始化
    public void init(){
        system.out.println("被初始化了");
    }
 
    @predestroy //销毁
    public void destroy(){
        system.out.println("被销毁了");
    }
    
    public user() {
        system.out.println("执行了无参构造");
    }
 
    public void setid(integer id) {
        system.out.println("set-id");
        this.id = id;
    }
//get和set方法
}

application-config.xml配置文件

 <bean id="user" class="com.cos.qf.entity.user" autowire="bytype" init-method="init" destroy-method="destroy">
</bean>

测试方法:不能用classpathxmlapplicationcontext的父类(applicationcontext)去关闭不然就报错

 @test
    public void text4() {
        classpathxmlapplicationcontext ctx = new classpathxmlapplicationcontext("application-config.xml");
        ctx.close();
    }

 

结果: 

到此这篇关于详解spring工厂特性的文章就介绍到这了,更多相关spring工厂特性内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!