类的加载机制、bean的生命周期、servlet的生命周期

1、类的加载机制

   1)类加载的触发情况
     (1)调用 new 方法
     (2)调用 loadclass 方法、forname 方法
     (3)访问静态变量或者为静态变量赋值
     (4)调用静态方法
     (5)通过反射进行创建类的实例
     (6)创建其子类的实例

   2)类的加载顺序:验证、准备、解析并称为链接;准备步骤有可能在初始化之后(动态绑定机制)
     (1)加载:java类加载器通过 完全限定名 的方式查找到对应的在字节码文件( java 编译器编译后生成的 .class 文件),利用字节码文件创建一个 class 对象
     (2)验证:检验输入的字节流是否符合虚拟机要求,包含四种验证:文件格式的验证、元数据的验证、字节码的验证、符号引用的验证
     (3)准备:为类变量分配内存,并进行初始化默认值;(不包含 final 修饰的、不包含非成员变量)
     (4)解析:将常量池中的符号引用转换成直接引用,包含三种解析:类或接口的解析、字段的解析、类方法或接口方法的解析
     (5)初始化:为类变量进行初始化
     (6)使用:
     (7)卸载:也就是销毁

   3)双亲委派机制
     (1)类加载器:启动类加载器(bootstrap classloader)、扩展类加载器(extensions classloader)、应用类加载器(application classloader)、自定义类加载器
     (2)双亲委派机制:一个类要加载时,通过自定义加载器向上找到父加载器,一直找到启动类加载器;如果启动类加载器加载不了,再向下委派,直到被加载
       优点: 避免被重复加载;避免 java 核心 API 中定义的类型被随意替换

2、bean的生命周期

在这里插入图片描述
   1)spring启动,找到并加载spring管理bean,对其进行实例化
   2)实例化后,将bean的引用和值注入到bean属性中
   3)如果bean实现了 BeanNameAware 接口,则会调用 setBeanName(),设置值为bean的id
   4)如果bean实现了 BeanFactoryAware 接口,则会有调用 setBeanFactory(),设置值为指定的Factory容器
   5)如果bean实现了 ApplicationContextAware 接口,则会调用 setApplicationContext(),传入上下文引用
   6)如果bean实现了 BeanPostProcessor 接口,则会调用 postProcessorBeforeInitialize()
   7)如果bean实现了 InitializingBean 接口,则会调用 afterPropertiesSet()
   8)如果bean使用 init-method 自定义了初始化方法,则调用自定义初始化方法
   9)如果bean实现了 BeanPostProcessor 接口,则会调用 postProcessorAfterInitialize()
   10)至此,bean就可以被使用了,被驻留在应用上下文,直到应用上下文被销毁
   11)如果bean实现了 DisposableBean 接口,则会调用 destory();如果有使用 destory-method 自定义了销毁方法,也会调用
     个人理解: 可分为 实例化(1)、属性注入(2)、设置属性(3、4、5)、初始化(6、7、8、9)、使用(10)、销毁(11)

3、servlet的生命周期

   1)装载并实例化 servlet:启动 servlet 容器,容器会查找配置文件,文件中配置了要使用的 servlet ;容器会创建 servlet 实例
   2)初始化:init() 方法;只调用一次;客户机访问服务器时才调用,初始化后进入就绪状态
   3)使用:service() 方法;可调用多次;
   4)销毁:detory() 方法;只调用一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值