注:完整代码在文章最后

生命周期:就是某个对象从创建到最终销毁整个过程当中会经历的历程!

通常,需要讨论生命周期时,对应的数据类型的对象都不是由开发人员自行维护的!

被容器维护的对象,都是由容器创建对象,并在适当的时候调用其中的某些方法的!而开发人员需要做的就是“确定满足某条件的时候应该执行什么任务”!也就是说,“容器决定什么时候执行,开发人员决定执行时做什么”。

学习生命周期的意义就是“知道在什么时候需要做什么事情”!

Servlet为例,其生命周期中会有几个特殊的方法,在特定的情况下会被调用,这些就称之为生命周期方法:

  • init():当Servlet被创建对象后,立即执行,且只执行1次,该方法适合编写一些初始化相关的代码;
  • service():当接收到匹配的请求后会被调用,接收到多少次请求,就执行多少次该方法;
  • destroy():当Servlet对象即将被销毁之前执行,且只执行1次,该方法适合编写一些与结束相关的代码,例如关闭等等。

当使用Spring框架后,某些类的对象交给Spring框架来管理了,那么,这些对象在什么时候被创建、什么时候被销毁,以及创建过程和销毁过程中需要执行某些代码,对于开发人员来说,一定程度上是不可控的!

Spring框架允许用户在类中自定义最多2个方法,分别表示“初始化方法”和“销毁方法”,并且,Spring框架会在创建对象之后自动调用初始化方法,会在销毁对象之前调用销毁方法!
关于方法的定义:

  • 访问权限:应该使用public权限;
  • 返回值类型:使用void
  • 方法名称:自定义;
  • 参数列表:空。

例如,在User类中自定义2个生命周期方法:

public void init() {System.out.println("User.init()");
}public void destroy() {System.out.println("User.destroy()");
}

然后,在配置对象的方法之前的@Bean注解中配置这2个方法作为生命周期方法:

@Bean(initMethod="init", destroyMethod="destroy")
public User user() {return new User();
}

全部代码:
User类

public class User {public User() {System.out.println("User.User()");}public void init() {System.out.println("User.init()");}public void destroy() {System.out.println("User.destroy()");}
}

Beans类:

public class Beans {@Bean(initMethod = "init",destroyMethod = "destroy")//@Scope ("prototype")public User user() {return new User();}
}//Demo主类:public class Demo {public static void main(String[] args) {//获取容器AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(Beans.class);//获取对象User user1 = ac.getBean("user",User.class);User user2 = ac.getBean("user",User.class);User user3 = ac.getBean("user",User.class);//测试System.out.println(user1);System.out.println(user2);System.out.println(user3);//关闭资源ac.close();}
}

Spring管理的对象的生命周期相关推荐

  1. (转)Spring管理的Bean的生命周期

    http://blog.csdn.net/yerenyuan_pku/article/details/52834011 bean的初始化时机 前面讲解了Spring容器管理的bean的作用域.接着我们 ...

  2. [原创]java WEB学习笔记94:Hibernate学习之路---session 的管理,Session 对象的生命周期与本地线程绑定...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. 把对象的创建交给spring来管理——  1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期

    把对象的创建交给spring来管理 spring对bean的管理细节     1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期 创建Bean的三种方式 ...

  4. Spring学习笔记09 - 对象的生命周期

    对象的生命周期 什么是对象的生命周期 一个对象的创建.存活.消亡的一个完整过程. 为什么要学习对象的生命周期? (由程序员控制的 创建对象 就使用new,User user = new User() ...

  5. spring一: 容器以及bean生命周期

    spring框架的几个优点: 1. 轻量级  2. 针对接口编程,解耦合   3. aop编程   4. 方便集成各种优秀框架  5.非侵入式   6.容器 IOC(Inversion of Cont ...

  6. Spring IOC:bean的生命周期与@Autowire(1)

    全系列文章: <Spring IOC:bean的生命周期与@Autowire(1)> <Spring IOC:bean的生命周期与@Autowire(2)> <Sprin ...

  7. Java 对象的生命周期

    Java对象的生命周期 在Java中,对象的生命周期包括以下几个阶段: 创建阶段(Created) 应用阶段(In Use) 不可见阶段(Invisible) 不可达阶段(Unreachable) 收 ...

  8. Hibernate学习(4)- Hibernate对象的生命周期

    1.Hibernate对象的生命周期(瞬时状态.持久化状态.游离状态) 1.瞬时状态(Transient): 使用new操作符初始化的对象就是瞬时状态,没有跟任何数据库数据相关联: 2.持久化状态(P ...

  9. Java对象的生命周期与作用域的讨论(转)

    导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对 ...

最新文章

  1. 正则表达式懒惰贪婪和replace函数
  2. linux socket recv函数 MSG_PEEK标志介绍
  3. Java培训总结:过滤器链的实现方法、配置和案例分析
  4. 计算机网络实验3:网络设备基本配置
  5. ubuntu连接有线局域网后无法使用无线网卡上网
  6. IP3 三阶交调截取点测试(转帖)
  7. 音乐计算机怎么用,如何利用电脑录制自己的歌曲(音乐)
  8. (26)HTML兼容写法
  9. 二叉树构造c语言实现,递归创建二叉树c语言实现+详细解释
  10. Linux中的 real user, effective user, saved set user 三种用户ID
  11. 建立良好人际关系的原则
  12. Java教程:Java分割字符串(spilt())
  13. mysql读取股票数据_读取股票数据存储到本地MySQL数据库(一)
  14. 电影票房排行 API数据接口
  15. LD3320语音识别模块+MP3-TF-16P模块实现语音交互功能
  16. 探索在原生网页中使用自定义数据属性
  17. 环境变量:用户变量和系统变量
  18. IntelliJ IDEA创建Servlet最新方法 Idea版本2021以及IntelliJ IDEA创建Servlet 404问题,找不到对应的路径。
  19. linux卸载gdb命令,Linux_Unix卸载gdb调试工具出现问题的解决方法,  Unix系统通过命令能够卸载 - phpStudy...
  20. KYC功能介绍:为客户提供新的机会

热门文章

  1. 核心 Android 调节音量的过程
  2. 切蛋糕能最多切多少块的问题
  3. 团队开发第二周第二天(董文轩,苏康奖,刘权毅,常晓杨,刘梦辉,刘若凡)...
  4. Set中的add和addAll方法
  5. 高颜值家庭娱乐小能手 荣耀畅玩平板 2真机评测
  6. Word中LNCS格式模板使用教程
  7. 终端运行Java程序
  8. 如何给Eclipse设置背景图片
  9. 【blender雕刻】物体模式下应用缩放后法线颠倒
  10. 混沌工程之-最小爆炸半径