Spring注解之Service详解

这篇具有很好参考价值的文章主要介绍了Spring注解之Service详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Service注解

@Service 注解是 Spring Framework 中的一种注解,它标识了这个类是一个业务逻辑层的服务 Bean。这意味着当 Spring 应用启动时,该 Bean 会被自动创建并加入到 Spring 应用上下文中。
简而言之,@Service 注解是一种用于标记服务层 Bean 的注解,是在 Spring Boot 应用中实现业务逻辑复用的重要方法之一。

Service用法及示例

使用 @Service 注解可以将一个类声明为业务逻辑组件,并将其对象存入 Spring 容器中。在控制器类中,通过注入该组件的实例,即可调用其中的方法。
以下是一个关于订单服务的代码示例,该示例说明了如何使用 @Service 注解。
首先,我们定义了一个订单服务接口,该接口包含两个方法:一个创建订单,一个查询订单详情。

public interface OrderService {
    Order createOrder(Order order);
    Order getOrderDetails(String orderId);
}

接下来,我们实现该服务接口,在该实现类上添加 @Service 注解,以标记它是一个服务层 Bean。

@Service
public class OrderServiceImpl implements OrderService {

    @Override
    public Order createOrder(Order order) {
        // 在这里执行创建订单的业务逻辑
        return order;
    }

    @Override
    public Order getOrderDetails(String orderId) {
        // 在这里执行查询订单详情的业务逻辑
        return new Order();
    }
}
}

最后,我们可以在其他组件(比如Controller)中通过注入该服务类实例来使用该服务类中的业务逻辑。例如,下面的代码示例显示了如何在Controller组件中注入并使用该订单服务。

@RestController
public class OrderController {

    @Autowired
    private OrderService orderService;

    @PostMapping("/orders")
    public Order createOrder(@RequestBody Order order) {
        return orderService.createOrder(order);
    }

    @GetMapping("/orders/{orderId}")
    public Order getOrderDetails(@PathVariable String orderId) {
        return orderService.getOrderDetails(orderId);
    }
}

传统方式是怎么做的呢?

public class OrderController {
    private OrderService orderService = new OrderServiceImpl();
    
    public Order createOrder(Order order) {
        return orderService.createOrder(order);
    }

    public Order getOrderDetails(String orderId) {
        return orderService.getOrderDetails(orderId);
    }
}

可以看到这种方法直接在控制器组件中创建了服务类实例,并在控制器组件中调用服务类中的业务逻辑。于是这种方式的缺点呼之欲出:
1.手动创建对象,并在代码中手动编写依赖关系。
2.每个类都必须明确地创建它需要的其他类的实例,并且在代码中显式地引用这些实例。
3.代码可能充满了繁琐的创建实例和引用实例的代码,很难维护。
这种方式在代码简单且不存在大量依赖关系时是可行的,但在复杂的项目中,代码的复杂性和依赖关系的难以维护性往往是问题。

@Service注解是怎么体现业务逻辑复用的?

下面的示例展示了如何使用 OrderService 类的多个实例在不同的地方复用业务逻辑。
首先,我们在另一个类PaymentService中注入 OrderService 实例:

@Service
public class PaymentService {

    @Autowired
    private OrderService orderService;

    public void processPayment(long orderId) {
        // 调用订单服务以获取订单详细信息
        Order order = orderService.getOrderById(orderId);
        // 执行付款操作
        ...
    }
}

这段代码中,通过注入 OrderService 类的实例,我们可以在 PaymentService 类中使用 OrderService 中的 getOrderById() 方法。这样,我们就可以在多个不同的类中复用 OrderService 中的业务逻辑,而不必在每个类中都实现一遍

总结

使用Service注解的服务类为其他组件提供了一种复用业务逻辑的方法,能够减少重复代码的编写。不需要自己手动管理对象的创建和销毁,也不需要自己手动维护对象之间的依赖关系。提高代码的可维护性。
常常与控制器组件和逻辑层的请求处理组件搭配使用:在控制器组件中注入服务类实例,然后使用该实例调用服务类的业务逻辑,将结果返回给请求处理组件。文章来源地址https://www.toymoban.com/news/detail-438322.html

到了这里,关于Spring注解之Service详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring 详解五 IOC(注解开发)

    注解开发已经成为开发的主流选择,例如springboot都是基于注解开发使用的spring,所以学习注解开发是很有必要的,基本Bean注解, 主要是使用注解的方式替代原有xml的bean 标签及其标签属性的配置 XML 配置 注解 描述 bean id=“” class=“” @Component 被该注解标识的类,会在指定扫

    2024年02月13日
    浏览(27)
  • Spring MVC-@RequestMapping注解详解

    目录 1、@RequestMapping注解的作用 2、@RequestMapping注解的位置 3、value属性 (1)基础用法 (3)路径中的占位符(重点) 4、method属性 5、params属性(了解) 6、headers属性(了解) @RequestMapping注解的作用,就是 将请求和处理请求的控制器方法关联起来 ,建立映射关系。 SpringMVC接

    2023年04月24日
    浏览(34)
  • Spring Boot 中的 @Field 注解详解

    Spring Boot 是目前 Java 生态圈中最受欢迎的 Web 应用开发框架之一,它提供了很多优秀的功能和工具,可以帮助开发者快速构建高效、可靠的 Web 应用程序。其中一个重要的功能就是数据绑定和验证,Spring Boot 提供了多种方式来绑定请求参数、表单数据、JSON 数据等。其中,@Fi

    2024年02月11日
    浏览(27)
  • 【Spring进阶系列丨第七篇】Spring框架新注解分类及详解

    1.1.1、定义一个类 1.1.2、使用Configuration注解修饰类 1.1.3、作用 ​ 使用Configuration注解修饰的类表示的是:当前类是一个配置类。该类的作用和beans.xml是一样的,换句话说,该 注解所修饰的类就是用来代替beans.xml文件的。 1.2.1、定义bean 1.2.2、在主配置类中注册bean ​ 在以前,

    2024年04月10日
    浏览(85)
  • 【微服务】spring 条件注解从使用到源码分析详解

    目录 一、前言 二、spring 条件注解概述 2.1 条件注解@Conditional介绍 2.2 @Conditional扩展注解

    2024年02月11日
    浏览(29)
  • 【微服务】Spring条件注解从使用到源码分析详解

    🎉欢迎来到架构设计专栏~【微服务】Spring条件注解从使用到源码分析详解 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平

    2024年02月08日
    浏览(29)
  • 【Spring教程九】Spring框架实战:全面深入详解IOC/DI注解开发

    欢迎大家回到《 Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《 如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《 IOC/DI配置管理第三方bean 加载properties文件》。 Spring的IOC/DI对应的配置开

    2024年02月03日
    浏览(37)
  • 【Spring教程十】Spring框架实战:全面深入详解IOC/DI之--纯注解开发模式下的依赖注入&&注解读取properties配置文件

    欢迎大家回到《 Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《 如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《 全面深入详解IOC/DI注解开发》 Spring为了使用注解简化开发,并没有提供

    2024年02月04日
    浏览(44)
  • Spring MVC是什么?详解它的组件、请求流程及注解

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解Spring MVC是什么,它的优缺点与九大组件,以及它的请求流程与常用的注解。 目录 一、Spring MVC是什么? 二、Spring MVC的优缺点 1、优点 2、缺点 三、Spring MVC的九

    2024年02月12日
    浏览(35)
  • 【Spring进阶系列丨第十篇】基于注解的面向切面编程(AOP)详解

    ​ 注意,该类的两个细节: a、@Component注解向容器中注册一个Bean。 b、@Aspect注解表示这个是一个切面类。 c、@Before注解表示的是这个是前置增强/前置通知。 ​ 注意:对于业务Bean,我们也需要通过@Service注解来向容器中注册。 ​ 问题:我们看到对于切面类中定义的通知,有

    2024年04月23日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包