项目结构
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{@Overridepublic 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;
具体类似于: