springboot编写简述01

项目结构

  • Users.java
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
java 复制代码
package com.sust.service;

import com.sust.entity.Users;

public interface UsersService {
    public Users checkUsers(Users users);
}
  • UsersServiceImp.java
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
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 实例。

java 复制代码
// 必须在有效 Spring Bean 中定义自动装配成员(@Component|@Service|...) 
@Autowired
UsersService us;

具体类似于:

相关推荐
luck_0078 分钟前
PhpSpreadsheet 导出excel 找不到setCellValueByColumnAndRow
php
初晴~22 分钟前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
盖世英雄酱5813627 分钟前
InnoDB 的页分裂和页合并
数据库·后端
生椰拿铁You33 分钟前
解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题
php
小_太_阳1 小时前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾1 小时前
scala借阅图书保存记录(三)
开发语言·后端·scala
黑胡子大叔的小屋1 小时前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
星就前端叭2 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
计算机毕设孵化场2 小时前
计算机毕设-基于springboot的校园社交平台的设计与实现(附源码+lw+ppt+开题报告)
spring boot·课程设计·计算机毕设论文·计算机毕设ppt·计算机毕业设计选题推荐·计算机选题推荐·校园社交平台
苹果醋32 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计