不多逼逼,直接看注解上面的文档,
@PostConsturct
PostConstruct注释用于需要执行的方法在依赖注入完成后执行任何初始化。这个方法必须在类投入服务之前调用。
这个所有支持依赖关系的类都必须支持注解。即使调用带有PostConstruct注释的方法如果类不请求注入任何资源。
方法只能加@PostConstruct一个注解(如果配合其他注解,可能发生二次调用的情况)。
使用该@PostConstruct注解的方法必须满足以下所有条件:
1.@PostConstruct被用作拦截器的方法(PS:除了用作拦截器器得方法之外,被改注解修饰的方法不得具有任何参数)
该方法得签名如下:
void <METHOD>(InvocationContext)
Object <METHOD>(InvocationContext) throws Exception
PostConstruct拦截器方法一定不能引发应用程序异常,但是如果除生命周期事件之外,相同的拦截器方法还插在业务或超时方法上,则可以声明它引发被检查的异常,包括java.lang.Exception。如果PostConstruct拦截器方法返回一个值,则容器会将其忽略。
2.@PostConstruct未被用作拦截器的方法
该方法的签名如下:
void <METHOD>(InvocationContext)
该方法的访问修饰符可以为 public, protected,private or private.
该方法不能是静态的
该方法可以是被final修饰的
如果该方法抛出未经检查的异常,则该类不得放入服务中,除非是EJB可以处理异常甚至从异常中恢复的EJB。