PostConstruct

注解:PostConstruct

/**
 * 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 EJB
 * interceptors   in which case it takes an InvocationC ontext object as
 * defined by the EJB   specification.
 * - The return type of the method MUST be void.
 * - The method MUST NOT throw a checked exception.
 * - 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 javax.annotation.PreDestroy
 * @see javax.annotation.Resource
 */
@Documented
@Retention (RUNTIME)
@Target(METHOD)
public @interface PostConstruct {
}

在对象注册之后马上执行。

有几个注意点:

  1. 一个类中只有一个函数可以被@PostConstruct修饰。以为当修饰多个时,无法判断先执行哪个。
  2. 修饰的函数的返回类型必须为void。是因为后续没有操作?

使用的场景:
不需要调用具体的Bean对象中的方法,即在对象注入的时候就会调用方法。程序启动后,不需要写调用代码,就会执行一些操作。
比如,在一个main函数中,通过一些方法使对象注入,不用其他操作会执行在@PostConstruct修饰的方法中的动作。

你可能感兴趣的:(JAVA)