Spring模拟用户注册操作

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring模拟用户注册操作相关的知识,希望对你有一定的参考价值。

需求:模拟用户注册操作。

  • 需要定义一个dao接口(UserDao)接口中的方法 insertUser(SysUser user),定义接口的实现类 mysqlUserDao ---------(2)
    inserUser()方法里面不需要操作数据, 输出“使用了dao执行insert操作”。

  • 需要定义一个service接口(UserService),定义接口的实现类 UserServiceImpl.

  • 在service的实现类有一个 UserDao类型的属性。

  • service类中有一个方法 addUser(SysUser user).
    操作是 service类中的addUser() { userDao.insertUser() } 完成注册。

  • 定义一个实体类(domain) SysUser, 表示用户的数据。(1)

要求实现:

程序中的UserServiceImpl, MySqlUserDao这些类都有spring容器创建和管理,同时要给 UserServiceImpl类中的 userDao属性赋值。
从spring容器中获取 UserServiceImpl类型的对象, 调用addUser()方法,输出“使用了dao执行insert操作”

步骤:

1.定义一个实体类(domain) SysUser, 表示用户的数据。


SysUser.java

/**
 * @author WanZi
 * @create 2021-11-05 
 */
public class SysUser {
    private String name;
    private Integer age;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
}

2.定义一个dao接口(UserDao)接口中的方法insertUser(SysUser user)

UserDao.java

/**
 * @author WanZi
 * @create 2021-11-05 
 */
public interface UserDao {
    void insertUser(SysUser user);
}

定义接口的实现类 MySqlUserDao



MySqlUserDao.java
inserUser()方法里面不需要操作数据, 输出“使用了dao执行insert操作”。

/**
 * @author WanZi
 * @create 2021-11-05 
 */
public class MySqlUserDao implements UserDao {
    @Override
    public void insertUser(SysUser user) {
        System.out.println("使用了dao执行insert操作");
    }
}

3. 需要定义一个service接口(UserService),定义接口的实现类 UserServiceImpl.


👇


UserService.java
service类中有一个方法 addUser(SysUser user).

/**
 * @author WanZi
 * @create 2021-11-05 
 */
public interface UserService {
    void addUser(SysUser user);
}

定义接口的实现类 UserServiceImpl.

在service的实现类有一个 UserDao类型的属性。
service类中的addUser() { userDao.insertUser() } 完成注册。
UserServiceImpl.java

/**
 * @author WanZi
 * @create 2021-11-05 
 */
public class UserServiceImpl implements UserService {
    
    private UserDao userDao;
    @Override
    public void addUser(SysUser user) {
        userDao.insertUser(user);
    }
}

4. 程序中的UserServiceImpl, MySqlUserDao这些类都有spring容器创建和管理,同时要给 UserServiceImpl类中的 userDao属性赋值。

创建spring配置文件:

<!--把要使用对象,使用bean声明-->
<bean id="mysqluserDao" class="com.bjpowernode.dao.impl.MySqlUserDao"/>
<bean id="userService" class="com.bjpowernode.service.impl.UserServiceImpl">
        <property name="userDao" ref="mysqluserDao"/> <!-- setUserDao(mysqluserDao)-->
</bean>


进行测试:


一个负责数据库,一个负责业务逻辑.

Ioc实现解耦合(数据变多了,需要换一个)



OracleDaoImpl.java

/**
 * @author WanZi
 * @create 2021-11-05 
 */
public class OracleDaoImpl implements UserDao {

    @Override
    public void insertUser(SysUser user) {
        System.out.println("Oracle的insert");
    }
}

怎么用这个对象?👉打开spring配置文件:applicationContext.xml再声明一个就ok

<bean id="oracleUserDao" class="com.bjpowernode.dao.impl.OracleDaoImpl"/>
<bean id="userService" class="com.bjpowernode.service.impl.UserServiceImpl">
        <property name="userDao" ref="oracleUserDao"/> <!-- setUserDao(oracleUserDao)-->
</bean>



spring配置文件中维护对象的赋值,减少原代码的修改.

关系的管理交给容器去做.关系变得松散---灵活度越高---减少工作量

以上是关于Spring模拟用户注册操作的主要内容,如果未能解决你的问题,请参考以下文章

Spring模拟用户注册操作--注解

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

如何从 Spring Security 中的 java 代码登录用户?