详解Spring工厂特性
程序员文章站
2022-03-24 09:53:24
一、饿汉式创建优势工厂创建之后,会将spring配置文件中的所有对象都创建完成(饿汉式)。提高程序运行效率。避免多次io,减少对象创建时间。(概念接近连接池,一次性创建好,使用时直接获取)二、生命周期...
一、饿汉式创建优势
工厂创建之后,会将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工厂特性内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: JS实现扫雷项目总结
推荐阅读
-
详解如何使用Jersey客户端请求Spring Boot(RESTFul)服务
-
详解Spring Data Jpa 模糊查询的正确用法
-
详解Spring Cloud 断路器集群监控(Turbine)
-
Spring Boot中使用Spring-data-jpa的配置方法详解
-
PHP V5.3.0 新特性详解_PHP
-
spring mvc路径匹配原则详解
-
String之PropertyPlaceholderConfigurery源码解析 博客分类: spring PropertyPlaceholderConfigurery源码详解使用
-
Python设计模式之简单工厂模式实例详解
-
详解Spring Boot实战之Rest接口开发及数据库基本操作
-
spring缓存代码详解