【发布时间】:2014-09-13 13:24:44
【问题描述】:
我想在我的 Web 应用程序中初始化一些代码。在我将它用作我的一个 bean 中的 @PostConstruct 之前,但对我来说感觉不太合适。 在我看来,生命周期中初始化代码的地方是在 servletcontext 初始化之后。
这就是我写这样一个监听器类的原因:
public class MyServletContextListener implements ServletContextListener {
@Autowired
UserService userService;
@Autowired
RepairService repairService;
@Override
public void contextInitialized(ServletContextEvent sce) {
// Maak een gewone gebruiker
Address address1 = new Address("Bruul", "5", "2800", "Mechelen");
Person person1 = new Person("Jan", "Peeters", address1);
Client client1 = new Client(person1, "jan.peeters@student.kdg.be", "jan");
// Maak een gewone gebruiker
Address address2 = new Address("Zandstraat", "23", "3000", "Leuven");
Person person2 = new Person("Michel", "Van den Bergh", address2);
Client client2 = new Client(person2, "michel.vandenbergh@gmail.com", "michel");
// Maak een repairer
Address address3 = new Address("Nationalestraat", "5", "2000", "Antwerpen");
Person person3 = new Person("Wouter", "Deketelaere", address3);
Repairer repairGuy1 = new Repairer(person3, "wouter.deketelaere@kdg.be", "jef", "Master");
repairGuy1.rate(4);
// Maak een repairer
Address address4 = new Address("Kleuterstraat", "1", "2500", "Lier");
Person person4 = new Person("Handy", "Man", address4);
Repairer repairGuy2 = new Repairer(person4, "handy.man@handyman.com", "moeilijk", "Bachelor");
repairGuy2.rate(3);
// add users and update een gebruiker met een nieuw wachtwoord
try
{
userService.addUser(client1);
userService.addUser(client2);
userService.addUser(repairGuy1);
userService.addUser(repairGuy2);
userService.updatePassword(repairGuy1, "jef", "wouter");
userService.checkLogin(repairGuy1.getUsername(), "wouter");
}
// ommitted code
现在,这不起作用,我认为这是因为我无法在生命周期的早期自动装配我的服务。我无法手动构建新的修复和用户服务,因为这些类是抽象的。我应该将我的初始化代码移到其他地方吗?或者有没有办法在生命周期的早期做到这一点?
【问题讨论】:
标签: java spring servlets autowired servletcontextlistener