()方法 3,终止阶段 调用destroy()方法 从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy...PreDestroy()方法在destroy()方法执行执行之后执行 ?
自从Java EE5 之后就引入了@PostConstruct和@PreDestroy,这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作。...))// 检索名称 .jszbm(e.getJszbm())// 检索值编码 .jszmc(e.getJszmc()) // 检索值名称PreDestroy
简介 Java EE5 引入了@PostConstruct和@PreDestroy这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作。
写在前面 在前面的《【String注解驱动开发】你真的了解@PostConstruct注解和@PreDestroy注解吗?》...一文中,我们简单的介绍了@PostConstruct注解与@PreDestroy注解的用法,有不少小伙伴纷纷留言说:在Spring中,@PostConstruct注解与@PreDestroy注解标注的方法是在哪里调用的呀...相信大家应该都挺好奇的吧,那今天我们就来一起分析下@PostConstruct注解与@PreDestroy注解的执行过程吧!...项目工程源码已经提交到GitHub:https://github.com/sunshinelyz/spring-annotation 注解说明 @PostConstruct,@PreDestroy是Java...调用过程 具体过程是,IOC容器先解析各个组件的定义信息,解析到@PostConstruct,@PreDestroy的时候,定义为生命周期相关的方法,组装组件的定义信息等待初始化;在创建组件时,创建组件并且属性赋值完成之后
@PreDestroy注解 @PreDestroy注解同样是Java提供的,看下源码,如下所示。....*; @Documented @Retention (RUNTIME) @Target(METHOD) public @interface PreDestroy { } 被@PreDestroy修饰的方法会在服务器卸载...public void preDestroy(){ System.out.println("Cat的preDestroy()方法..."); } public...注解标注的preDestroy()方法。...Cat的preDestroy()方法... Cat的destroy()方法...
@PostConstruct和@PreDestroy 是两个作用于Servlet生命周期的注解,相信从 Servlet 开始学 Java 后台开发的同学对他应该不陌生。...@PreDestroy : 当 bean 被 Web 容器的时候被调用,一般用来释放 bean 所持有的资源。。...private void shutdown() { System.out.println("PreDestroy注解方法被调用"); } } 输出结果如下: ?...但是 J2EE已在Java 9中弃用 @PostConstruct和@PreDestroy这两个注解 ,并计划在Java 11中将其删除。我们有什么更好的替代方法吗?当然有!...如果你还是非要使用 Java 9 及以后的版本使用 @PostConstruct和@PreDestroy 这两个注解的话,你也可以手动添加相关依赖。
常用取值:singleton prototype(默认单例 默认单例 多例 和生命周期相关的(了解)@PreDestroy@PostConstruct @PreDestroy 作用:用于指定销毁方法
ClassPathXmlApplicationContext(“applicationcontext.xml”); app.close(); 定义为prototype类型的实例创建之后spring就不在管理了,它只是做了new操作而已,要想使用preDestroy
使用@PreDestroy注解 @PreDestroy注解是一个生命周期注解,主要用于标记一个方法在其所属的对象被销毁之前需要执行的操作。...示例: @Component public class PreDestroyBean { @PreDestroy public void preDestroy() {...System.out.println("@PreDestroy closeMethod 关闭操作。。。")...; } } 在该示例中,当PreDestroyBean 实例被销毁时,会执行被@PreDestroy注解标记的preDestroy() 方法。...在这3中方法中,推荐使用@PreDestroy注解,因为这种方式简洁明了,减少了代码量,并且与Spring的注解驱动编程风格相契合。它适用于大多数情况,特别是当Bean的销毁逻辑相对简单时。
通常使用时,根据个人喜好使用,个人比较喜好使用@PostConstruct 和@PreDestroy,因为简单。...@PostConstruct 和@PreDestroy @PostConstruct 和@PreDestroy 是 JSR-250(Java Specification Requests) 中定义的注解...PreDestroy 标注的方法。...public void preDestroy() { System.out.println("user preDestroy 1"); } } School @Component public...public void preDestroy1 () { System.out.println("school preDestroy1 1"); } } Main方法 public static
Bean 有三种方式: @PostConstruct InitializingBean.afterPropertiesSet() init-method 销毁 Spring Bean 同样有三种方式: @PreDestroy...DisposableBean.destroy() destroy-method 正所谓,天对地,雨对风;@PostConstruct 对 @PreDestroy;InitializingBean.afterPropertiesSet...@PreDestroy 这种方式是 Spring 非常提倡的一种方式,我们通常将其标记在方法上即可,通常习惯将这个方法起名为 destory() @PreDestroy public void...首先 @PreDestroy 会被调用 其次 DisposableBean.destroy() 会被调用 最后调用通过 XML 配置的 destroy-method 方法或通过设置 @Bean 注解...设置 destroyMethod 属性的方法 用图示来说明一下调用顺序 这个调用顺序也不难记忆 PreDestroy (P),destroy (D),destroy-method (D) ---> PDD
public void PreDestroy() { System.out.println("hello @PreDestroy"); } } 这里踩过一个坑,如果使用...JDK9 之后版本 ,@PostConstruct/@PreDestroy 需要使用 maven 单独引入 javax.annotation-api,否者注解不会生效。...public void PreDestroy() { System.out.println("hello @PreDestroy"); } @Override...@PreDestroy 注解将会被 CommonAnnotationBeanPostProcessor 拦截,这里类同时也继承了 DestructionAwareBeanPostProcessor。...@PostConstruct/@PreDestroy 这种注解方式使用方式简单,代码清晰,比较推荐使用这种方式。
@PostConstruct和@PreDestroy 在JSR250规范中,有两个与Bean生命周期相关的注解,即@PostConstruct和@PreDestroy。...3.1 示例:@PostConstruct和@PreDestroy的使用 我们这里还是用Lion类来创建这个例子,将Lion类修改为使用@PostConstruct和@PreDestroy注解 package...; } @PreDestroy public void destroy() { System.out.println("@PreDestroy - Lion正在进行销毁...("@PreDestroy - 狮子已经消耗完所有能量。。。")...("@PreDestroy - 狮子已经消耗完所有能量。。。")
destory-method: Bean生命周期(1)---Spring源码从入门到精通(七) 这篇主要介绍,InitializingBean, DisposableBean接口 和 @PostConstruct,@PreDestroy...annotationConfigApplicationContext.close(); } 这时候,我们会打印出来,对象创建construct,初始化init和销毁: 2、@PostConstruct,@PreDestroy...定义cat类,给init和destory方法加这两个注解,顾名思义,PostConstruct注解意思在对象创建之后调用的方法,PreDestroy在销毁之前调用的方法,同样加上component注解...(){ System.out.println("cat ...PostConstruct."); } /** * 销毁之前调用 */ @PreDestroy...public void destory(){ System.out.println("cat ...PreDestroy"); } } junitTest不变,打印之后如下
与此对照的就是通过@PostConstruct和@PreDestroy在Bean初始化或销毁时执行一些操作。...很明显Spring的Lifecycle是基于容器的生命周期来处理逻辑,而@PostConstruct和@PreDestroy是基于Bean的生命周期来处理业务逻辑。...像我们经常用到的@Resource、@PostConstruct、@PreDestroy、@Generated等都属于这个规范中定义的注解。...@PostConstruct的约定 @PostConstruct和@PreDestroy是在Java EE 5引入的,位于javax.annotation包下,也就是java拓展包定义的注解。...PostConstruct注解方法被调用 当关闭服务时,会打印: PreDestroy注解方法被调用 通过实例,基本印证了上述说的理论。
. ", e); } } @PreDestroy public void preDestroy() { if (reader !...{ LOGGER.error("Database reader cound not be initialized. ", e); } } @PreDestroy...public void preDestroy() { if (reader !
@PreDestroy:使用该注解标记一个方法,在Bean被销毁之前调用,相当于DisposableBean接口中的 destroy() 方法。...现在,让我们来看一个简单的示例,演示如何使用InitializingBean和DisposableBean接口以及@PostConstruct和@PreDestroy注解来管理Bean的生命周期:import...System.out.println("@PostConstruct annotated method is called"); // 执行初始化操作 } // 在销毁前调用 @PreDestroy...public void cleanUp() { System.out.println("@PreDestroy annotated method is called");...// 执行资源释放操作 }}以上示例展示了如何使用InitializingBean和DisposableBean接口以及@PostConstruct和@PreDestroy注解来管理Bean的生命周期
com.xgj.ioc.configuration.lifeCycle; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy...com.xgj.ioc.configuration.lifeCycle; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy...} @PostConstruct public void init2() { System.out.println("init 2"); } @PreDestroy...public void destory1() { System.out.println("destory 1"); } @PreDestroy public...由此可以看出,Spring先调用类的构造函数实例化Bean,然后在执行@Autowired进行自动注入,然后分别执行标注了@PostConstruct的方法,然后在容器关闭时,分别执行了标注@PreDestroy
3.使用 @PostConstruct 和 @PreDestroy 注解 除了 xml 配置的方式,Spring 也支持用 @PostConstruct和 @PreDestroy 注解来指定 init...public void initPostConstruct(){ System.out.println("执行PostConstruct注解标注的方法"); } @PreDestroy...public void preDestroy(){ System.out.println("执行preDestroy注解标注的方法"); } } 配置文件: <bean
领取专属 10元无门槛券
手把手带您无忧上云