gpt4 book ai didi

Quarkus:如何仅针对非 PROD 配置文件运行 StartupEvent?

转载 作者:行者123 更新时间:2023-12-03 08:14:29 27 4
gpt4 key购买 nike

@Singleton
public class Startup {
private static final String ADMIN_ROLES = String.join(",", Api.adminuser.role, Api.apiuser.role);

@Inject
UserRepo repo;
@Transactional
public void loadUsersForTest(@Observes StartupEvent evt) {//TODO Need to load only for non-PROD profiles
repo.deleteAll();// reset and load all test users
repo.addTestUserOnly(Api.adminuser.testuser, Api.adminuser.testpassword, ADMIN_ROLES);
repo.addTestUserOnly(Api.apiuser.testuser, Api.apiuser.testpassword, Api.apiuser.role);
}
}

最佳答案

有多种方法可以做到这一点。

第一个是使用io.quarkus.runtime.configuration.ProfileManage,如下所示:

@Singleton
public class Startup {
private static final String ADMIN_ROLES = String.join(",", Api.adminuser.role, Api.apiuser.role);

@Inject
UserRepo repo;
@Transactional
public void loadUsersForTest(@Observes StartupEvent evt) {
if ("prod".equals(io.quarkus.runtime.configuration.ProfileManager.getActiveProfile())) {
return;
}
repo.deleteAll();// reset and load all test users
repo.addTestUserOnly(Api.adminuser.testuser, Api.adminuser.testpassword, ADMIN_ROLES);
repo.addTestUserOnly(Api.apiuser.testuser, Api.apiuser.testpassword, Api.apiuser.role);
}
}

第二种是使用io.quarkus.arc.profile.UnlessBuildProfile,如下所示:

@UnlessBuildProfile("prod")
@Singleton
public class Startup {
private static final String ADMIN_ROLES = String.join(",", Api.adminuser.role, Api.apiuser.role);

@Inject
UserRepo repo;
@Transactional
public void loadUsersForTest(@Observes StartupEvent evt) {
repo.deleteAll();// reset and load all test users
repo.addTestUserOnly(Api.adminuser.testuser, Api.adminuser.testpassword, ADMIN_ROLES);
repo.addTestUserOnly(Api.apiuser.testuser, Api.apiuser.testpassword, Api.apiuser.role);
}
}

第二种方法更好,因为当您构建生产应用程序时,它会导致 Startup 永远不会成为 CDI bean。

关于Quarkus:如何仅针对非 PROD 配置文件运行 StartupEvent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69868991/

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