从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式:

@PostConstruct

Public void someMethod() {}
                                                                                    
或者

public @PostConstruct void someMethod(){}

被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。PreDestroy()方法在destroy()方法执行执行之后执行

被注解的Servlet生命周期

需要注意的是,注解会多多少少地影响到服务器的启动速度。服务器在启动时候会遍历Web 应用的WEB-INF/classes下的所有class文件与WEB-INF/lib下的所有jar文件,以检查哪些类使用了注解。如果应用程序中没有 使用任何注解,可以在Web.xml中设置的metadata-complete属性为true.(支持@PostConstruct和 @PreDestroy的服务器需要支持Servlet2.5规范。Tomcat5.x仅支持Servlet2.4规范。)

我现在要说的是用实例说明它有什么作用。

比如说我有一种情况,在我的servlet初始化加载之前我想处理一些东西,像加载缓存等等。

怎么做。@PostConstruct就派上用场了。那为什么这玩意用的不多呢,这是因为如果初始化之前我们要加载或处理某些玩意完全可以在构造器初始化时就处理了,但这种方法需要自己重写构造器。好吧。直接上代码看看具体用它的时候怎么做的。

[java] view plain copy print?

  1. package com.whaty.products.whatysns.web.info;

  2. import javax.annotation.PostConstruct;

  3. import javax.annotation.Resource;

  4. import org.springframework.stereotype.Service;

  5. import org.springframework.util.Assert;

  6. import com.whaty.framework.cache.core.model.Cache;

  7. import com.whaty.framework.cache.core.service.CacheService;

  8. import com.whaty.framework.cache.entitycache.service.EntityCacheHelper;

  9. import com.whaty.framework.cache.entitycache.service.IEntityDaoAdapter;

  10. /**

  11. * @author bc_qi

  12. * @param <KEY>

  13. * @param <ENTITY>

  14. */

  15. @Service("AjaxCacheableService")

  16. public class AjaxCacheableService{

  17. @Resource(name="cacheService")

  18. protected CacheService cacheService;

  19. protected boolean useReadWriteEntityDao = false;

  20. protected boolean useCache = true;

  21. protected int entityCacheMaxSize = 1000;

  22. protected int entityCacheMaxLiveSeconds = 3600;

  23. protected Cache entityCache;

  24. /**

  25. * 构造方法执行后,初始化,

  26. */

  27. @PostConstruct

  28. public void init() {

  29. Assert.notNull(cacheService, "cacheService must be set!");

  30. getCache();

  31. }

  32. /**

  33. * 获取cache

  34. * @return

  35. */

  36. protected Cache getCache() {

  37. if (entityCache == null) {

  38. entityCache = cacheService.addCache(this.getClass().getName(),entityCacheMaxLiveSeconds);

  39. }

  40. return entityCache;

  41. }

  42. /**

  43. * @param id

  44. * @param useCache 是否使用Cache

  45. * @return

  46. */

  47. public Object getCache(String id) {

  48. String strid = String.valueOf(id);

  49. Object o = entityCache.get(strid);

  50. return  o;

  51. }

  52. public Object putCache(int tTLSeconds,String cacheId,Object value) {

  53. String strid = String.valueOf(cacheId);

  54. Object o = entityCache.get(strid);

  55. if (o != null) {

  56. return  o;

  57. } else {

  58. entityCache.put(strid, value, tTLSeconds);

  59. return value;

  60. }

  61. }

  62. }

转载于:https://blog.51cto.com/chengyou/1784738

注解@PostConstruct与@PreDestroy讲解及实例相关推荐

  1. 注解 @PostConstruct 与 @PreDestroy 详解及实例

    简介 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Java EE5 引入了@PostConstruct和@PreDestroy这两个作用于Ser ...

  2. 【JPA】注解@PostConstruct、@PreDestroy

    从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解@PostConstruct和@PreConstruct. 这两个注解被用来修饰一个非静态的void()方法,而且这 ...

  3. 注解@PostConstruct与@PreDestroy

    从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion):@PostConstruct和@PreDestroy.这两个注解被用来修饰一个非静态的vo ...

  4. Spring学习总结(25)——注解@PostConstruct和@PreDestroy使用总结

    @PostConstruct 和 @PreDestroy 这两个都是方法的注解,将注解标注在方法上,该方法就能够在应用启动和销毁时执行, @PostConstruct 注解标注的函数,是在类执行完构造 ...

  5. spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚

    概述: 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 P ...

  6. @PostConstruct、@PreDestroy注解介绍及Spring中@PostConstruct、constructor、@Autowired的顺序

    @PostConstruct和@PreDestroy @PostConstruct和@PreDestroy注解是Common Annotations中的注解,Common Annotations原本是 ...

  7. 【Spring注解系列08】@PostConstruct与@PreDestroy

    1.@PostConstruct与@PreDestroy @PostConstruct:在bean创建完成并且属性赋值完成:来执行初始化方法 @PreDestroy:在容器销毁bean之前通知我们进行 ...

  8. Spring @PostConstruct和@PreDestroy实例

    在Spring中,既可以实现InitializingBean和DisposableBean接口或在bean配置文件中指定 init-method 和 destroy-method 在初始化和销毁回调函 ...

  9. Spring生命周期注解之@PostConstruct,@PreDestroy

    目录 1. 注解说明 2. 调用过程 3. 调用分析 1. 注解说明 @PostConstruct,@PreDestroy是Java规范JSR-250引入的注解,定义了对象的创建和销毁工作,同一期规范 ...

  10. PostConstruct和PreDestroy失效

    问题:PostConstruct 和 PreDestroy 失效 说明 今天遇到问题,在使用 Spring的两个注解的过程当中,出现了失效的情况. 也就是 @PostConstruct 和 @PreD ...

最新文章

  1. c语言exit和return区别,在fork和vfork中使用
  2. Cocos2d-x 学习笔记一 HelloWorld
  3. 微信 Tinker 负责人张绍文关于 Android 热修复直播分享记录
  4. [蓝桥杯][2013年第四届真题]买不到的数目(动态规划)
  5. MySQL数据库开发的 36 条军规
  6. Hanlp的安装和配置
  7. Hadoop迁移MaxCompute神器之DataX-On-Hadoop使用指南
  8. 【lucene】lucene高亮显示
  9. Spring 框架学习 有用
  10. 算法:判断是否是循环链表,并返回循环链表开始节点Linked List Cycle II
  11. 【SQL注入16】SQL漏洞利用之读写文件
  12. 部分大学上演造假运动闯关本科评估(图)
  13. linux中的段定义的,Linux中的段
  14. call_user_func_array函数详解
  15. 计算机课件制作总结,多媒体课件制作的学习心得
  16. RHCSA 核心考点列表
  17. service mesh解决的几个问题
  18. 2016年软考程序员模拟预测习题20题
  19. Python函数复习
  20. java怪物掉落_我的世界地下城boss打法及掉落物品一览

热门文章

  1. memcpy和strcpy的区别
  2. linux SCP远程拷贝文件方法及not a regular file 错误解决方法
  3. 多路复用增益,PASTA定理
  4. erlang web服务器性能,100万并发连接服务器笔记之Erlang完成1M并发连接目标
  5. 【机器学习系列】MCMC第一讲:蒙特卡罗方法初认识
  6. 概率图模型(PGM)学习笔记(一)动机与概述
  7. 最近写mapreduce程序从hbase中抽取程序遇到的一些问题
  8. android studio for android learning (七) Android Log类全解
  9. java中的并发是什么意思_java中的并发是什么
  10. Oracle 存储过程笔记.