使用postContruct Java在Spring MVC中在运行时创建默认用户

时间:2019-06-12 15:41:44

标签: java mysql hibernate spring-mvc

我的Web应用程序[Spring MVC]启动时需要创建默认用户配置文件:

-使用postConstruct

-在启动时创建默认用户

-不要在下次运行中创建同一用户

-默认用户(例如admin)以及其他一些信息(例如名字,姓氏,DOB等),并且应将其存储在数据库中。

当然,我必须遵循适当的mvc模式,例如控制器,模型,服务,存储库,spring-configuration,spring-security配置。

请不要在spring-bootJSON中发布代码。 任何帮助将不胜感激,并在此先感谢。

2 个答案:

答案 0 :(得分:0)

按如下所示创建一个名为SecurityUtil的类。

import org.springframework.security.authentication.encoding.Md5PasswordEncoder;

import java.util.HashSet;
import java.util.Set;

public class SecurityUtil {

    public static User getFirstTimeUser() {
        User defaultUser = new User();
        defaultUser.setActive(true);
        defaultUser.setUserId("admin");
        defaultUser.setFirstName("First Time");
        defaultUser.setLastName("Admin");
        defaultUser.setId(0L);
        defaultUser.setPassword(new Md5PasswordEncoder().encodePassword("admin", Constants.SALT));
        //Set<Role> roles = new HashSet<Role>();
        Role role = new Role();
        role.setId(0L);
        role.setRoleName("ROLE_ADMIN");
        //roles.add(role);
        defaultUser.setRole(role);
        return defaultUser;
    }

然后从通过Spring的UserDetails实现的Userservice类中调用此方法。

@Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        UserFilter filter = new UserFilter();
        filter.setUserId(username);
        List<User> users = userDAO.find(filter);
        if (users != null && users.size() == 1) {
            return users.get(0);
        } else {
            if (userDAO.count() == 0) {
                return getFirstTimeUser();
            } else {
                throw new UsernameNotFoundException("Username Not Found Exception");
            }
        }
    }

答案 1 :(得分:0)

经过大量研究后,这个问题有了简单的解决方案,我得出的结论是,使用@PostConstruct可以在应用程序的初始化阶段创建任何东西。 野兔是我发现的东西:

    @Component
public class DbInit {

    @Autowired
    private UserRepository userRepository;

    @PostConstruct
    private void postConstruct() {
        User admin = new User("admin", "admin password");
        User normalUser = new User("user", "user password");
        userRepository.save(admin, normalUser);
    }
}

来自:https://www.baeldung.com/spring-postconstruct-predestroy的参考 多亏了此站点,我们才是一个学习的好地方。