我刚刚启动了一个Spring启动项目,我的第一个任务是确保在第一次创建管理员用户帐户时启动应用程序。我只是想知道实现这些功能的最佳方法是什么,或者在Spring功能中使用某种构建。
每当用户访问http://localhost:8080时,我的项目就在现在,我正在检查用户列表是否为空:
List<User> users = userService.getAllUsers();
if(users.isEmpty()){
modelAndView.setViewName("register");
} else {
modelAndView.setViewName("home");
}
如果用户服务将返回空列表,用户将被重定向到注册视图。
在我看来,确实有更好的方法可以做到,但由于缺乏知识,我不知道应该朝哪个方向前进。
有人可以建议什么是最好的解决方案吗? 我可以使用Spring功能的构建吗?
答案 0 :(得分:2)
初始化userService bean时,您可以检查帐户是否存在:在userService类中创建一个init方法,注释为@PostConstruct。使用@PostConstruct注释的方法不能有任何参数,并且保证在类初始化(包括依赖注入)之后和使用类之前启动。如果您的服务是spring singleton bean(默认),则仅在应用程序启动期间执行检查。
使用这种方法,它看起来像这样:
@Service
public class UserService {
//some code
@PostConstruct
public void init() {
if(userListIsEmpty())
createAdmin();
}
//some more code
}
当然,通过这种方式,您必须在某些配置文件中提供管理员帐户创建的详细信息,或者只需对其进行硬编码 - 请注意,在大多数应用程序中,默认管理员都有一些可通过配置更改的默认名称和密码,或者初次登录后。