springboot编写简述01

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

  • 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;

具体类似于:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/687776.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【WEEK15】 【DAY3】Scheduled Tasks【English Version】

2024.6.5 Wednesday Following 【WEEK15】 【DAY2】【DAY3】Email Tasks【English Version】 Contents 17. Asynchronous, Scheduled, and Email Tasks17.3. Scheduled Tasks17.3.1. Two Annotations:17.3.2. Cron Expression17.3.3. Modify Springboot09TestApplication.java …

民主测评要做些什么?

民主测评,作为一种重要的民主管理工具,旨在通过广泛征求群众意见,对特定对象或事项进行客观、公正的评价。它不仅是推动民主参与、民主监督的重要手段,也是提升治理效能、促进社会和谐的有效途径。以下将详细介绍民主测评的主要过…

2.4 OpenCV随手简记(五)

一、图像翻转 第一个图像翻转,这个可是制作表情包的利器。 图像翻转在 OpenCV 中调用函数 flip() 实现,原函数如下: flip(src, flipCode, dstNone) src:原始图像。 flipCode:翻转方向, 如果 flipCode 为…

AI绘画如何打造高质量数据集?

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答11 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你…

Windows搭建apache网站

1、官网下载安装包,注意下载服务器对应操作系统的安装包(此案例为64位操作系统) Apache VS17 binaries and modules downloadFor (business) webmasters, developers and home-users who want running always up to date Windows VS17 binar…

【造化弄人:计算机系大学生真的象当年的高速公路收费员一样吗?】

曾经高速公路的收费员是多么的自豪和骄傲,按照常逻辑,车是越来越多,收费员应该越来越多?但现实情况,大家有目共睹! 不论你的车子怎么跑,只要上高速就要交费,那时候的收费员&#xf…

qmt量化交易策略小白学习笔记第18期【qmt编程之获取对应周期的北向南向数据--方式2:原生python】

qmt编程之获取对应周期的北向南向数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 获取对应周期的北向南向数据 提示 该数据通过get_market_data_ex接口获取获取历史数据前需要先用downl…

【数据分析系列】交叉列联表与卡方检验:数据解读与Python实践应用

目录 一、交叉列联表和卡方检验的关系 (一)什么是交叉列联表 (二)什么是卡方检验 (三)除了卡方检验,列联表分析还可以结合其他统计方法 二、列联表只能用于两个分类变量吗? 三、…

解决富文本中抖音视频无法播放的问题——403

问题 富文本中的抖音视频无法播放,资源状态码是403禁止访问打开控制台,可以看到在项目中打开,数据请求的请求头多了一个Referer: http://localhost:3000/而复制链接在新窗口直接打开,请求头中并不会携带Referer 解决方案 在ind…

windows 系统通过 cmd 命令终止进程

windows 系统通过 cmd 命令终止进程 1、使用 netstat 命令查看特定端口的占用情况 例如,要查看端口号为 8015 的情况,可以执行以下命令: netstat -ano | findstr 8105此命令会显示所有占用端口 8105 的网络连接,并列出 PID&…

2009年408真题解析

2009年408真题解析 【2009.1】为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是。 A.栈 B.队列 C.树 D.图 …

2024-06-06 问AI: 在深度学习中,什么是欧几里德长度?

文心一言 在深度学习中,欧几里德长度(也称为欧几里得距离或欧氏距离)是一个常用的概念,它衡量的是在多维空间中两个点之间的真实距离,或者说是向量的自然长度(即该点到原点的距离)。以下是关于…

[职场] 缺点范文 #知识分享#经验分享#媒体

缺点范文 回答示范1: 我的公开演讲能力比较差,在公共场合讲话的时候我会感到紧张,不过谈论我熟悉的领域我会比较放松。所以当我需要做公开发言的时候,我必须要准备得很充分。我确实羡慕那些无论什么话题都能够高谈阔论的人。 回…

中国版Wayve决战端到端,等待数据的大力出奇迹

作者 |王博 编辑 |德新 「人工智能的定律只有一个,就是规模定律(Scaling Law),大力出奇迹。端到端是描述方式,更应该去考虑如何去生产更多的自动驾驶合适的数据,来喂养更大更合适的模型,取得更…

多目标应用:NSGA2求解无人机三维路径规划(MATLAB代码)

详细介绍 多目标应用:基于非支配排序的鱼鹰优化算法NSOOA求解无人机三维路径规划(MATLAB代码)-CSDN博客 一次运行结果 完整MATLAB代码 多目标应用:NSGA2求解无人机三维路径规划(MATLAB代码)

香港优才计划线上申请10大步骤,2024年流程截图,diy照做就可以

我是糖爸,已获批香港优才。10个步骤申请香港优才真的很简单,因为现在入境处只接受线上申请啦,你自己上传资料就可以,找中介也是你自己准备资料给他帮忙上传,何不自己动手上传呢,省个几万。 10大步骤分别是&…

吴恩达深度学习笔记:机器学习(ML)策略(1)(ML strategy(1))1.7-1.8

目录 第三门课 结构化机器学习项目(Structuring Machine Learning Projects)第一周 机器学习(ML)策略(1)(ML strategy(1))1.7 什么时候该改变开发/测试集和指…

智能视频监控平台LntonCVS视频融合共享平台保障露营安全解决方案

在当今社会,都市生活的快节奏和压力使得越来越多的人渴望逃离城市的喧嚣,寻求一种短暂的慢生活体验。他们向往在壮丽的山河之间或宁静的乡村中露营,享受大自然的宁静与美好。随着露营活动的普及,露营地的场景也变得更加丰富多样&a…

Three.js和Babylon.js,webGL中的对比效果分析!

hello,今天分享一些three.js和babylon.js常识,为大家选择three.js还是babylon.js做个分析,欢迎点赞评论转发。 一、Babylon.js是什么 Babylon.js是一个基于WebGL技术的开源3D游戏引擎和渲染引擎。它提供了一套简单易用的API,使开发…

UFS Explorer Professional Recovery: 如何从启用了 mSATA 缓存的 Drobo 设备中恢复数据

天津鸿萌科贸发展有限公司是 UFS Explorer Professional Recovery 数据恢复软件的授权代理商。 UFS Explorer Professional Recovery 数据恢复软件提供综合性的解决方案,用于解决复杂的数据恢复案例,包括那些采用特殊存储技术的案例,或介质受…