项目结构
在这里插入图片描述

  • Users.java
package com.sust.entity;

import java.io.Serializable;

public class Users implements Serializable {
    private String name;
    private String password;

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Serializable 是 Java 中的一个接口,它标识着一个类的对象可以被序列化。序列化是指将对象的状态转换为字节流的过程,以便可以在网络上传输或将其保存到文件中,或者在不同虚拟机中进行通信。反之,将字节流转换回对象状态的过程称为反序列化。

  • UsersService.java
package com.sust.service;

import com.sust.entity.Users;

public interface UsersService {
    public Users checkUsers(Users users);
}

  • UsersServiceImp.java
    package com.sust.service;
    
    import com.sust.entity.Users;
    import org.springframework.stereotype.Service;
    
    @Service//将当前类注入到spring容器
    // 通过使用@Service注解,Spring框架会在需要使用UsersServiceImp的地方自动注入它的实例,从而实现了解耦和依赖注入。
    public class UsersServiceImp implements UsersService{
        @Override
        public Users checkUsers(Users users) {
            if(users!=null){
                if(users.getName()!=null&&users.getName().trim().equals("admin")){
                    if(users.getPassword()!=null&&users.getPassword().trim().equals("password")){
                        return users;
                    }
                }
            }
            return null;
        }
    }
    

通过接口和实现类的方式可以实现对接口的调用。通过 UsersService 接口定义了一个名为 checkUsers 的方法,然后 UsersServiceImp 类实现了这个接口,并提供了 checkUsers 方法的具体实现。

当其他组件需要使用 checkUsers 方法时,它们可以直接依赖于 UsersService 接口而不需要关心具体的实现细节。通过依赖注入的方式,可以将 UsersServiceImp 实例注入到需要的地方,从而实现了对接口的调用,同时也实现了松耦合的设计。

@Service注解用于将一个类标识为服务(Service),并告知Spring框架将其实例化并管理,以便在应用程序中进行依赖注入、事务管理等操作。

  • UsersController.java
package com.sust.controller;

import com.sust.entity.Users;
import com.sust.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // 注入spring容器
public class UsersController {
    @Autowired // 自动装配
    private UsersService usersService;
    /*
        编写验证
        @RequestMapping 映射请求的路径,前端使用此路径访问控制器业务方法
        https:// ... /check_Users
     */
    @RequestMapping(value = "check_users")
    public Users check(Users users) {
        Users us = usersService.checkUsers(users);

        return us;
    }
}

  1. @RestController`:
    • 这是一个特殊的Spring注解,它结合了@Controller@ResponseBody注解。
    • @Controller用于将类标识为控制器,告诉Spring这是一个控制器类。
    • @ResponseBody用于将方法的返回值直接作为HTTP响应的内容,而不是视图名称,通常用于返回JSON数据或其他非HTML格式的数据。
    • 因此,@RestController用于标识一个类为RESTful风格的控制器,处理HTTP请求并返回数据,而不是渲染视图。
  2. @Autowired
    • 这是Spring框架的一个注解,用于自动装配(自动注入)依赖对象。
    • 在这段代码中,通过@Autowired注解将UsersService类型的依赖自动注入到UsersController类中,无需手动实例化UsersService对象。
  3. @RequestMapping
    • 这是一个用于映射HTTP请求路径的注解。
    • 在这个例子中,@RequestMapping(value = "check_users")将HTTP请求路径"/check_users"映射到了check方法上。
    • 当前端通过HTTP请求访问"/check_users"路径时,将会调用check方法,并执行其中的逻辑。

解耦是通过依赖注入实现的。在 UsersController 类中通过 @Autowired 注解将 UsersService 类型的依赖注入到了 usersService 字段中。这样一来,UsersController 类不需要直接实例化 UsersService 类,而是通过 Spring 框架自动注入的方式获取到了一个 UsersService 实例。

// 必须在有效 Spring Bean 中定义自动装配成员(@Component|@Service|…) 
@Autowired
UsersService us;

具体类似于:

在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部