项目结构
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;
}
}
- @RestController`:
- 这是一个特殊的Spring注解,它结合了
@Controller
和@ResponseBody
注解。 @Controller
用于将类标识为控制器,告诉Spring这是一个控制器类。@ResponseBody
用于将方法的返回值直接作为HTTP响应的内容,而不是视图名称,通常用于返回JSON数据或其他非HTML格式的数据。- 因此,
@RestController
用于标识一个类为RESTful风格的控制器,处理HTTP请求并返回数据,而不是渲染视图。
- 这是一个特殊的Spring注解,它结合了
@Autowired
:- 这是Spring框架的一个注解,用于自动装配(自动注入)依赖对象。
- 在这段代码中,通过
@Autowired
注解将UsersService
类型的依赖自动注入到UsersController
类中,无需手动实例化UsersService
对象。
@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;
具体类似于: