PostConstruct用法说明

目的:

主要是启动项目并执行特定的初始化(including annotation injection and any initialization)

源码说明:

The PostConstruct annotation is used on a method that needs to be executed after dependency injection is done to perform any initialization. This method MUST be invoked before the class is put into service. This annotation MUST be supported on all classes that support dependency injection. The method annotated with PostConstruct MUST be invoked even if the class does not request any resources to be injected. Only one method can be annotated with this annotation. The method on which the PostConstruct annotation is applied MUST fulfill all of the following criteria:

 

  • The method MUST NOT have any parameters except in the case of interceptors in which case it takes an InvocationContext object as defined by the Interceptors specification.
  • The method defined on an interceptor class MUST HAVE one of the following signatures:

    void (InvocationContext)

    Object (InvocationContext) throws Exception

    Note: A PostConstruct interceptor method must not throw application exceptions, but it may be declared to throw checked exceptions including the java.lang.Exception if the same interceptor method interposes on business or timeout methods in addition to lifecycle events. If a PostConstruct interceptor method returns a value, it is ignored by the container.

  • The method defined on a non-interceptor class MUST HAVE the following signature:

    void ()

  • The method on which PostConstruct is applied MAY be public, protected, package private or private.
  • The method MUST NOT be static except for the application client.
  • The method MAY be final.
  • If the method throws an unchecked exception the class MUST NOT be put into service except in the case of EJBs where the EJB can handle exceptions and even recover from them.

Since:

Common Annotations 1.0

See Also:

javax.annotation.PreDestroy

javax.annotation.Resource

@Documented
@Retention (RUNTIME)
@Target(METHOD)
public @interface PostConstruct {
}

 

翻译说明:

PostConstruct注释用于在完成依赖注入以执行任何初始化之后需要执行的方法。必须在课程投入使用之前调用此方法。必须在支持依赖注入的所有类上支持此注释。即使类没有请求注入任何资源,也必须调用使用PostConstruct注释的方法。只有一种方法可以使用此注释进行注释。应用PostConstruct注释的方法必须满足以下所有标准:


•除了拦截器之外,方法绝不能有任何参数,在这种情况下,它需要一个由Interceptor规范定义的InvocationContext对象。
•在拦截器类上定义的方法必须具有以下签名之一:
void (InvocationContext)

Object (InvocationContext)抛出异常

注意:PostConstruct拦截器方法不能抛出applicationexceptions,但是如果相同的拦截器方法除了生命周期事件之外插入onbusiness或timeout方法,它也可以被声明为抛出包括java.lang.Exception的已检查异常。如果aPostConstruct拦截器方法返回一个值,则容器会忽略它。

•在非拦截器类上定义的方法必须具有以下签名:
void ()

•应用PostConstruct的方法可以是公共的,受保护的,包私有的或私有的。
•除应用程序客户端外,方法不能是静态的。
•方法可能是最终的。
•如果方法抛出未经检查的异常,则除了在EJB可以处理异常并且从中恢复异常的EJB的情况下,该类不能被置于intoservice中。
从以下版本开始:Common Annotations 1.0参见:javax.annotation.PreDestroyjavax.annotation.Resource

你可能感兴趣的:(PostConstruct,annotation,java,Java进阶)