注解@PostConstruct与@PreDestroy讲解及实例

原创 2016年08月29日 17:38:22

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

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

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

import com.whaty.framework.cache.core.model.Cache;
import com.whaty.framework.cache.core.service.CacheService;
import com.whaty.framework.cache.entitycache.service.EntityCacheHelper;
import com.whaty.framework.cache.entitycache.service.IEntityDaoAdapter;

/**
 * @author bc_qi
 * @param <KEY>
 * @param <ENTITY>
 */
@Service("AjaxCacheableService")
public class AjaxCacheableService{
  
  @Resource(name="cacheService")
  protected CacheService cacheService;
  
  protected boolean useReadWriteEntityDao = false;
    protected boolean useCache = true;
    protected int entityCacheMaxSize = 1000;
    protected int entityCacheMaxLiveSeconds = 3600;
    protected Cache entityCache;
  
  
  /**
   * 构造方法执行后,初始化,
   */
  @PostConstruct
  public void init() {
    Assert.notNull(cacheService, "cacheService must be set!");
    getCache();
  }

  /**
   * 获取cache
   * @return
   */
  protected Cache getCache() {
    if (entityCache == null) {
      entityCache = cacheService.addCache(this.getClass().getName(),entityCacheMaxLiveSeconds);
    }
    return entityCache;
  }
  
  /**
   * @param id
   * @param useCache 是否使用Cache
   * @return
   */
  public Object getCache(String id) {
    String strid = String.valueOf(id);
        Object o = entityCache.get(strid);
        return  o;
    }
    
  public Object putCache(int tTLSeconds,String cacheId,Object value) {
    String strid = String.valueOf(cacheId);
        Object o = entityCache.get(strid);
        if (o != null) {
            return  o;
        } else {
            entityCache.put(strid, value, tTLSeconds);
            return value;
        }
    }
  
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

注解@PostConstruct与@PreDestroy讲解及实例

原文地址:http://blog.csdn.net/yaerfeng/article/details/8447530 记录下来以备后用: 从Java EE 5规范开始,Servlet中增加了两...
  • txp1993
  • txp1993
  • 2015年01月29日 10:15
  • 2370

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

简介Java EE5 引入了@PostConstruct和@PreDestroy这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作。此文主要说明@PostConst...

Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解

Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解,代码下载地址:http://ww...
  • yaerfeng
  • yaerfeng
  • 2014年05月02日 09:38
  • 12679

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

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

码农小汪-spring框架学习之6-spring基于注解的容器配置 @Qualifier @Autowired @Resouce @PostConstruct @PreDestroy

注解这个东西真的很方便,我们使用起来也是特别的简单,和XML配合使用就是更是非常的舒服。就是具体的逻辑引用看起来不是特别的明显。但是使用注解已经是一个框架发展的趋势吧。大家都在往这个方面上去靠。没得办...

@PostConstruct 和 @PreDestroy 使用

@PostConstruct 和 @PreDestroy Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,您既可...

Spring @PostConstruct and @PreDestroy example

Spring @PostConstruct and @PreDestroy example...

通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作...

Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

一、Bean的初始化     有两种方式初始化Bean。        1、在配置文档中通过指定init-method 属性来完成              在Bean的类中实现一个初始化Bea...

通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:注解@PostConstruct与@PreDestroy讲解及实例
举报原因:
原因补充:

(最多只允许输入30个字)