@PostConstruct加载哪种数据类型方法

时间:2017-01-26 04:45:40

标签: spring

我跟着上述主题。但我无法清楚地了解它。

我的问题是当加载@PostConstruct调用void方法时。

此处代码

@PostConstruct
public void init(){
    System.out.println("Welcome");
}

但是当我调用List数据类型方法时,它不会加载。

此处代码

@PostConstruct
public List<User> users() {
    System.out.println("welcome");
    userList = new ArrayList<User>();
    userList.addAll(getUserService().getUsers());
    return userList;
}

这是什么原因?请帮助我!

1 个答案:

答案 0 :(得分:0)

  

PostConstruct注释用于在完成依赖项注入以执行任何初始化之后需要执行的方法。必须在类投入使用之前调用此方法。必须在支持依赖注入的所有类上支持此注释。即使该类没有请求注入任何资源,也必须调用使用PostConstruct注释的方法。只有一个方法可以使用此注释进行注释。应用PostConstruct注释的方法必须满足以下所有条件 - - 除了EJB拦截器之外,方法绝不能有任何参数,在这种情况下,它采用EJB规范定义的InvocationC ontext对象。 - 方法的返回类型必须是无效的。 - 该方法不得抛出已检查的异常。 - 应用PostConstruct的方法可以是公共的,受保护的,包私有的或私有的。 - 除应用程序客户端外,方法绝不能是静态的。 - 方法可能是最终的。 - 如果该方法抛出一个未经检查的异常,那么该类绝不能投入使用,除非EJB可以处理异常甚至从它们恢复的EJB。

Doc:http://docs.oracle.com/javaee/7/api/javax/annotation/PostConstruct.html