Java 在应用程序范围的bean上的postconstruct方法上创建调度程序

Java 在应用程序范围的bean上的postconstruct方法上创建调度程序,java,scheduled-tasks,cdi,java-ee-7,Java,Scheduled Tasks,Cdi,Java Ee 7,在ApplicationScoped bean的PostConstruct方法上创建调度程序是否有效 @ApplicationScoped public class myBean { private String name = "Soup of the day"; @Schedule(hour="0", persistent=false) @PostConstruct public void afterCreate() { System.out

在ApplicationScoped bean的PostConstruct方法上创建调度程序是否有效

@ApplicationScoped
public class myBean {

    private String name = "Soup of the day";

    @Schedule(hour="0", persistent=false)
    @PostConstruct
    public void afterCreate() {
        System.out.println("Bean Created");
    }

    public String getName() {
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

带有
@Startup
注释(在类上)和
@Schedule
注释(在方法上)的
@Singleton
EJB应该足够了。您不需要使用
@PostConstruct
,因为这将迫使您将单例EJB实例注入到某个地方(我假设这在您的用例中是不可能的)

您试图通过此实现的目标是什么?您将获得在构造时和通过计时器调用的函数。@AlexNevidomsky。谢谢你的回复。我有soem数据库调用。我试着在应用程序启动时运行它们,而且每天晚上都这样。所以我想到了这个方法。你能帮我吗?我不明白,为什么不能让afterCreate()和onTimer()函数都调用databaseCall()来完成这项工作(而不是在afterCreate()上放置两个注释)?下面是一个按你的方式执行的示例: