`

注解@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
分享到:
评论

相关推荐

    @PostConstruct 和 @PreDestroy 使用

    在Java世界中,`@PostConstruct` 和 `@PreDestroy` 是两个非常重要的注解,它们主要用于管理组件的生命周期,特别是在使用Spring框架或者Java EE应用中。这两个注解是JSR 250规范的一部分,提供了对bean初始化和销毁...

    Spring Bean的初始化和销毁实例详解

    在本文中,我们详细讲解了Spring Bean的初始化和销毁,包括使用@Bean的initMethod和destroyMethod、JSR-250的@PostConstruct和@PreDestroy注解等多种方式来控制Bean的生命周期。在实际开发中,我们可以根据需要选择...

    spring注解1

    本文将详细讲解Spring中的几个关键注解:`@Autowired`、`@Qualifier`、`@Resource`以及`@PostConstruct`和`@PreDestroy`。 1. `@Autowired` `@Autowired`注解用于自动装配bean,它可以应用在字段、方法或构造器上,...

    Spring IOC之方法注入

    总结来说,Spring的IoC方法注入提供了一种灵活的方式来管理和初始化对象,通过`@PostConstruct`和`@PreDestroy`注解,或者实现`InitializingBean`和`DisposableBean`接口,我们可以在对象生命周期的关键点执行特定的...

    最简单的一个spring注解实例

    本实例将深入探讨Spring中的注解使用,特别是如何创建一个最简单的Spring注解实例。 首先,我们需要了解Spring的核心组件——Spring容器,也称为ApplicationContext。这个容器负责管理应用程序中的bean,包括它们的...

    Spring实例化Bean顺序

    7. **@PreDestroy注解**:与`@PostConstruct`相对,`@PreDestroy`标记的方法在Bean销毁前调用。这个过程发生在Spring容器关闭时。 8. **Singleton和Prototype范围**:Singleton Bean在容器启动时只实例化一次,而...

    spring注解实例

    本资源包“spring注解实例”聚焦于Spring框架的注解编程模型,特别是与SSH2(Struts、Spring、Hibernate)集成的场景。SSH2是一个经典的Java Web开发栈,其中Spring作为MVC框架和依赖注入容器,而Struts处理表现层,...

    Spring框架xml注解配置方式实例

    另外,类中可能还有`@Autowired`注解来自动装配依赖,`@Value`注解注入值,以及`@PostConstruct`和`@PreDestroy`注解来标记初始化和销毁方法。 **XML与注解结合配置的步骤:** 1. **定义Bean**:在Java类上使用`@...

    spring中service生命周期(xml/annotation)

    若要添加初始化和销毁逻辑,我们可以使用`@PostConstruct`和`@PreDestroy`这两个JSR-250注解。`@PostConstruct`标注的方法会在Bean实例化后,所有依赖注入完成后执行;`@PreDestroy`则会在Bean销毁前调用。示例如下...

    Spring @compenent注解详解

    `@PostConstruct`和`@PreDestroy`注解分别标识初始化和销毁方法,Spring会在Bean实例化后调用`@PostConstruct`方法,在销毁前调用`@PreDestroy`方法。 8. **生命周期回调** 除了初始化和销毁方法,Spring还提供了...

    Spring注解驱动开发实战-annotation

    @PostConstruct和@PreDestroy注解分别表示在Bean初始化后和销毁前执行的方法。例如: ```java @Service public class UserService { @PostConstruct public void init() { System.out.println("UserService 初始...

    计算机二级java资料.pdf

    @PreDestroy注解的方法则在Session Bean的实例将被EJB容器销毁之前调用,用于释放可能占用的资源,如关闭数据库连接,确保内存的高效使用和避免资源泄漏: ```java @PreDestroy public void cleanUp() { // 释放...

    Spring3 注解初级实例

    4. **方法注入(Method Injection)**:`@PostConstruct`和`@PreDestroy`注解分别标识初始化方法和清理方法,Spring会在bean初始化和销毁时调用它们。 5. **AOP注解**:`@Aspect`定义了一个切面,`@Before`、`@...

    Spring常用注解

    在SpringPrj项目中,我们可以看到与Spring注解相关的应用。以下是对Spring常用注解的详细说明: 1. `@Component`:这是Spring的基础组件注解,用于标记一个类作为Spring管理的Bean。你可以将其视为传统XML配置中的`...

    spring 2.5 注解

    开发者可以充分利用Java 5及更高版本的特性,如泛型和注解,以及与AspectJ的集成,实现更高效、更可维护的应用程序。通过实践如Spring PetClinic这样的示例应用,可以更好地理解和掌握这些新特性。

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

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

    jsf 的Annotations配置

    3. 如果需要自定义初始化和销毁逻辑,可以添加`@PostConstruct`和`@PreDestroy`注解的方法。 4. 根据Bean的生命周期和使用范围,选择合适的作用域注解,如`@SessionScoped`、`@ViewScoped`等。 5. 在JSF视图文件...

    Spring通过注解实现IOC

    6. `@PostConstruct`和`@PreDestroy`:这两个注解分别标记初始化和销毁方法,Spring会在Bean生命周期的相应阶段调用它们。例如: ```java @Component public class MyService { @PostConstruct public void ...

    Spring常用注解(收藏大全).docx

    在 Spring 中,`@Bean` 的属性支持多种设置方式,例如 `@Scope`、`@PostConstruct` 和 `@PreDestroy`。 * `@Scope`:设置 Spring 容器如何新建 Bean 实例,包括 Singleton、Prototype、Request、Session 和 Global...

Global site tag (gtag.js) - Google Analytics