在首次启动应用程序之前设置帐户的最佳方法

问题描述 投票:0回答:1

我刚刚开始一个Spring启动项目,我的第一个任务是确保第一次创建管理员用户帐户时启动应用程序。我只是想知道实现这些功能或在Spring功能中使用某种构建的最佳方法是什么。

现在,每当用户访问http://localhost:8080时我的项目中我正在检查用户列表是否为空:

 List<User> users = userService.getAllUsers();
        if(users.isEmpty()){
            modelAndView.setViewName("register");
        } else {
            modelAndView.setViewName("home");
        }

如果用户服务将返回空列表,用户将被重定向到注册视图。

在我看来肯定有更好的方法,但由于缺乏知识,我不知道我应该去哪个方向。

有人可以建议什么是最好的解决方案?我可以使用Spring功能的构建吗?

java spring spring-mvc spring-boot spring-security
1个回答
2
投票

您可以在初始化userService bean时检查该帐户是否存在:在userService类中创建一个使用@PostConstruct注释的init方法。使用@PostConstruct注释的方法不能有任何参数,并且保证在类初始化(包括依赖注入)之后和使用类之前启动。如果您的服务是spring singleton bean(默认),则仅在应用程序启动期间执行检查。

使用这种方法,它看起来像这样:

@Service
public class UserService {
    //some code
    @PostConstruct
    public void init() {
        if(userListIsEmpty())
            createAdmin();
    }
    //some more code
}

当然,通过这种方式,您必须在某些配置文件中提供管理员帐户创建的详细信息,或者只需对其进行硬编码 - 请注意,在大多数应用程序中,默认管理员具有一些默认名称和密码,可通过配置或初次登录后更改。

© www.soinside.com 2019 - 2024. All rights reserved.