对springboot各层的一些介绍和对其中一些注解的说明

1. springboot各层介绍

一个具体的web项目:

controller层—>service层(serviceImpl实现service接口)—>mapper层—>mapper.xml文件

解释:controller层调用了service层的具体功能和方法,service层由service对应的接口和实现类组成,serviceImpl实现service的相关接口同时完成相关的业务逻辑处理。service层(serviceImpl)再调用mapper层的接口进行业务逻辑应用的处理。mapper层的接口在对应的xml配置文件中进行配置、实现以及关联,故mapper层的任务就是向数据库发送sql语句,完成数据的处理任务!

pojo层映射数据库,pojo层的一个实体类映射数据库中的一张表


model(entity)

model是模型的意思,与entity、domain、pojo类似,是存放实体的类,类中定义了多个类属性,并与数据库表的字段保持一致,一张表对应一个model类。

主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数。


dao(mapper)

又被成为mapper层,叫数据持久层,先设计接口,然后在配置文件中进行配置其实现的关联。

dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。

数据持久化操作就是指,把数据放到持久化的介质中,同时提供增删改查操作,比如数据通过hibernate插入到数据库中


service

业务逻辑层,完成功能的设计

和dao层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用dao层的接口进行业务逻辑应用的处理。

service的impl是把mapper和service进行整合的文件

封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。


controller

控制层,控制业务逻辑service,控制请求和响应,负责前后端交互

controller层主要调用Service层里面的接口控制具体的业务流程,控制的配置也要在配置文件中进行


在这里插入图片描述


2. 对注解的提前说明

2.1 @MapperScan

在启动类里面做mapper扫描注解

例如:

@MapperScan(“com.code.*.mapper”)
在这里插入图片描述


描述:@MapperScan是MyBatis框架中的一个注解,它的作用是扫描指定包下的Mapper接口,并将这些Mapper接口注册成为Spring容器中的Bean。这样,在其他组件中可以直接通过@Autowired注解来注入Mapper接口的实例,从而在代码中方便地调用数据库操作。

​ 通常情况下,MyBatis的Mapper接口是定义了数据库表的CRUD操作,而Mapper接口的实现由MyBatis框架动态生成。通过@MapperScan注解,可以将这些Mapper接口的实例纳入Spring容器的管理,使得在业务层或服务层可以直接注入Mapper,而不需要手动实例化。


2.2 @Controller和@RestController注解的区别


@Controller适用于传统的Spring MVC应用,返回的是视图(View)。

@RestController适用于构建RESTful风格的Web服务,返回的是数据,通常以JSON或XML格式交互。

本项目应该用@RestController注解,注解错误会报404(找不到资源)错误


2.3 对@Override的说明

@Override是Java中的一个注解(Annotation),它用于标记方法是覆盖(Override)父类或接口中的方法。


2.4 @Autowired和@Resource


在Spring Boot中,@Autowired和@Resource都是用于实现依赖注入(Dependency Injection),但它们有一些区别:


来源:

@Autowired是Spring框架提供的注解,用于实现Spring容器中Bean的自动装配。

@Resource是Java EE标准中的注解,也可以实现Bean的自动装配。


配置方式:

@Autowired可以标记在字段、构造函数、setter方法或者方法参数上,可以通过@Qualifier注解来指定具体的Bean名称或者使用@Primary注解标记首选的Bean。

@Resource可以标记在字段或者setter方法上,它默认通过名称匹配来注入Bean,如果需要指定Bean名称,可以使用name属性。


依赖查找方式:

@Autowired按照类型进行依赖查找,它会根据被注入字段或者方法参数的类型在容器中查找匹配的Bean进行注入。

@Resource也可以按照类型进行依赖查找,但它也支持按照名称进行查找。


容器兼容性:

@Autowired通常用于与Spring容器集成,它是Spring框架特有的注解。

@Resource是Java EE标准的注解,可以在Java EE容器中使用,也可以在Spring容器中使用。

应当注意的是,需要注入例如adminMapper此类接口,应当使用@Resource注解,使用@Autowired注解会使的无法识别为bean。


对bean的说明:

l 在Java中,Bean通常用于表示业务实体、配置信息、数据传输对象(DTO)等,也可以用于封装服务、组件、控制器等可重用的代码。

l Spring框架在依赖注入和控制反转(IoC)的实现中广泛使用Bean的概念,通过在配置文件或类中声明Bean,Spring容器会自动管理这些Bean的生命周期,从而实现了解耦和灵活的应用开发。


2.5 @RequestBody和@RequestParam的作用


@RequestBody和@RequestParam是Spring框架中用于接收HTTP请求参数的注解,它们的作用有所不同:


  1. @RequestBody的作用:

​ @RequestBody注解用于接收HTTP请求体中的数据,通常用于POST、PUT等需要在请求体中携带数据的请求方法。

​ 它可以将请求体中的数据解析成Java对象,常用于接收JSON、XML等格式的数据,并将其转换为相应的Java对象。


  1. @RequestParam的作用:

​ @RequestParam注解用于接收HTTP请求的URL参数或查询参数(Query Parameter)。

​ 它通常用于GET请求或POST请求中使用URL编码的参数,在URL中拼接在问号后面,例如:/api/user?id=123&name=John。


示例代码:

@RestController

public class MyController {

  @PostMapping("/api/user")

  public ResponseEntity<User> createUser(@RequestBody User user) {

         // 通过@RequestBody接收请求体中的数据并转换为User对象

        // 执行创建用户的逻辑

        // 返回创建后的用户对象

		return ResponseEntity.ok(user);

  }

 
  @GetMapping("/api/user")

  public ResponseEntity<User> getUserById(@RequestParam Long id) {

       // 通过@RequestParam接收URL参数中的id值

        // 根据id查询用户信息

        // 返回用户对象

        User user = userService.getUserById(id);

        return ResponseEntity.ok(user);

  }

}

在上述示例中,createUser方法使用了@RequestBody注解来接收POST请求中的请求体数据,并将其转换为User对象。而getUserById方法则使用了@RequestParam注解来接收GET请求中的URL参数id,用于查询用户信息。


2.6 @RequestMapping


@RequestMapping是Spring框架中用于映射HTTP请求到特定方法或控制器的注解。它可以标记在方法或类级别上,并用于指定请求的URL路径、请求方法以及其他相关属性。

在Spring MVC框架中,@RequestMapping是一个非常常用的注解,用于处理HTTP请求,并将请求分发到相应的处理方法。它的作用是将请求映射到控制器方法上,以便进行处理和响应。


  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值