`

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

阅读更多
从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;
        }
    }
	
}

  • 大小: 6.4 KB
分享到:
评论

相关推荐

    Spring框架中 @Autowired 和 @Resource 注解的区别

    在 spring 框架中,除了使用其特有的注解外,使用基于 JSR-250 的注解,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。  首先,咱们简单了解 @PostConstruct 和 @PreDestroy 注释:  为了定义一个 bean...

    Spring bean初始化及销毁你必须要掌握的回调方法.docx

    1、通过java提供的@PostConstruct注解; 2、通过实现spring提供的InitializingBean接口,并重写其afterPropertiesSet方法; 3、通过spring的xml bean配置或bean注解指定初始化方法,如下面实例的initMethod方法通过@...

    开源框架面试专题及答案.pdf

    Spring Bean 的生命周期 &gt; Spring Bean 的生命周期简单易懂。在一个 bean 实例被初始化时,需要执行一系列的初 始化操作以达到可用的状态。同样的,当一个 bean 不在被调用...&gt; @PostConstruct 和@PreDestroy 注解方式

    spring.doc

    3.6.4 @PostConstruct 28 3.6.5 @PreDestroy 28 注解注入拓展: 28 3.7扫描注入 30 注解扫描拓展: 32 Mvc用注解写: 34 Spring容器IOC和di的整个启动过程: 38 3.8 spring中的继承 38 拓展spring为类中的属性赋值:...

    Spring的学习笔记

    五、 @Scope、@PostConstruct、@PreDestroy 19 六、 注解对应的jar包 19 第七课:AOP(面向切面编程) 19 一、 AOP概念 19 二、 利用动态代理实现面向切面编程 20 第八课:Spring AOP配置选项 21 一、 AOP配置...

    spring2.5 学习笔记

    五、 @Scope、@PostConstruct、@PreDestroy 19 六、 注解对应的jar包 19 第七课:AOP(面向切面编程) 19 一、 AOP概念 19 二、 利用动态代理实现面向切面编程 20 第八课:Spring AOP配置选项 21 一、 AOP配置...

    Spring 3 Reference中文

    4.9.6 @PostConstruct和@PreDestroy . 96 4.10 类路径扫描和管理的组件.. 96 4.10.1 @Component和更多典型注解 97 4.10.2 自动检测类和bean 的注册. 97 4.10.3 使用过滤器来自定义扫描 98 ...

    thinking-in-spring:学春天

    春天学习笔记 Bean初始化 BeanDefinitionBuilder 新的GenericBeanDefinition Bean的命名(非强制性) BeanNameGenerator AnnotationBeanNameGenerator Bean的别名(一般XML配置)... Bean的销毁@PreDestroy&gt; Dispo

    Spring.html

    PostConstruct PreDestroy 新注解 Bean:写方法上,将方法的返回值 Configuration:标记配置类 ComponentScan包扫描 PropertySource:加载配置文件 Import:导入其他配置类 AOP 概念:面向切面编程,在...

    Spring中文帮助文档

    3.11.5. @PostConstruct 与 @PreDestroy 3.12. 对受管组件的Classpath扫描 3.12.1. @Component和更多典型化注解 3.12.2. 自动检测组件 3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为...

    Spring API

    3.11.5. @PostConstruct 与 @PreDestroy 3.12. 对受管组件的Classpath扫描 3.12.1. @Component和更多典型化注解 3.12.2. 自动检测组件 3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为...

    spring3.1中文参考文档

    spring3.1中文参考文档,南磊翻译,现在有4章,目录如下: 第一部分 Spring framework概述.......................................................................................................................

    Java™ Servlet 规范.

    1.6.2 注解处理 .........................................................................................................................................14 Servlet 接口 ...................... 15 2.1 ...

    Servlet3.1规范(最终版) PDF

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 ...............................................

Global site tag (gtag.js) - Google Analytics