详解Spring工厂特性
作者:永旗狍子
今天带大家学习Spring的特性-工厂特性,文中有非常详细的介绍及代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
一、饿汉式创建优势
工厂创建之后,会将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工厂特性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- Spring事物的传播特性详解
- Spring Boot 2.4新特性减少95%内存占用问题
- Spring Boot 2.4 新特性之一键构建Docker镜像的过程详解
- spring5新特性全面介绍
- SpringBoot新特性之全局懒加载机制
- 全面解析Spring Security 过滤器链的机制和特性
- SpringBoot2.3新特性优雅停机详解
- Spring MVC接受表单自动封装特性实例解析
- SpringBoot2.0新特性之配置绑定全解析
- Spring各版本新特性的介绍
- Intellij IDEA 2017新特性之Spring Boot相关特征介绍
- 简单了解Spring Framework5.0新特性
- spring4新特性之web开发增强
- 浅析Spring4新特性概述
- Spring 4 支持的 Java 8 特性
- java Spring 5 新特性函数式Web框架详细介绍