gpt4 book ai didi

java - 在上下文初始化期间使用服务

转载 作者:行者123 更新时间:2023-12-01 12:43:20 25 4
gpt4 key购买 nike

我有一些代码想要在我的网络应用程序中初始化。在我将它用作我的一个 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

现在,这不起作用,我想这是因为我无法在生命周期的早期 Autowiring 我的服务。我无法手动构建新的修复和用户服务,因为这些类是抽象的。我应该将初始化代码移到其他地方吗?或者有没有办法在生命周期的早期做到这一点?

最佳答案

有一个名为

的接口(interface)
 ApplicationContextInitializer<ConfigurableApplicationContext>

您可以在 Spring 应用程序内的应用程序上下文启动期间使用它来初始化某些内容。

@Override
public void initialize(final ConfigurableApplicationContext appContext) {
this.configurableApplicationContext = appContext;

}

尝试创建一个实现该接口(interface)的类,spring 将了解初始化方法及其内容。

将其添加到 web.xml

  <context-param>
<param-name>contextInitializerClasses</param-name>
<param-value>class.to.the.interface.init.RuntimeEnvironmentInitializer</param-value>
</context-param>

关于java - 在上下文初始化期间使用服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com