我需要在FacesServlet启动时运行一些代码,但是当FacesServlet被声明为final时,我无法扩展它并覆盖init()方法.
特别是,在hibernate删除并创建数据模型之后,我想在开发和测试期间将一些数据写入数据库.
有没有办法配置Faces来运行某些方法,例如在faces-config.xml中?或者最好创建一个执行初始化的单例bean?
@ManagedBean(eager=true)
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
(类和方法名称实际上并不重要,它可以自由选择,所有关于注释)
这保证在启动之后构建FacesServlet,因此FacesContext可以在必要时使用.这与ServletContextListener其他答案所建议的相反.