我刚刚开始一个Spring启动项目,我的第一个任务是确保第一次创建管理员用户帐户时启动应用程序。我只是想知道实现这些功能或在Spring功能中使用某种构建的最佳方法是什么。
现在,每当用户访问http://localhost:8080时我的项目中我正在检查用户列表是否为空:
List<User> users = userService.getAllUsers();
if(users.isEmpty()){
modelAndView.setViewName("register");
} else {
modelAndView.setViewName("home");
}
如果用户服务将返回空列表,用户将被重定向到注册视图。
在我看来肯定有更好的方法,但由于缺乏知识,我不知道我应该去哪个方向。
有人可以建议什么是最好的解决方案?我可以使用Spring功能的构建吗?
您可以在初始化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
}
当然,通过这种方式,您必须在某些配置文件中提供管理员帐户创建的详细信息,或者只需对其进行硬编码 - 请注意,在大多数应用程序中,默认管理员具有一些默认名称和密码,可通过配置或初次登录后更改。