gpt4 book ai didi

java - 从 Spring MVC Controller 访问服务层

转载 作者:行者123 更新时间:2023-12-02 00:07:58 28 4
gpt4 key购买 nike

在 Spring MVC 中从 Controller 访问服务层的最佳方法是什么?我正在使用 SpringMVC 的注释。

之前,我每次都通过在 Controller 的每个方法中调用 ClassPathXMLApplicationContext(spring-bean-name.xml) 来从 bean 工厂获取 bean。

从问题的解答Accessing Service Layer from custom Controller in Spring MVC我知道服务 bean 必须 Autowiring 。

但是假设一个 Controller 访问多个服务,我们是否必须注入(inject)多个bean?但这不是一个好的实践,因为我们只能在 Controller 内的 1-2 个方法中使用特定的服务,并且将其设为类变量而不是函数变量并不好。

最佳答案

你是对的,你需要 Autowiring 你想要使用的服务。不用担心类变量与局部(函数)变量,这就是 DI 模式的实现方式。

从最严格的面向对象设计的意义上来说,您不应该在类级别声明变量,除非它们涉及描述对象的状态。然而,DI(依赖注入(inject))是一种非常成熟的模式,无论有多少方法实际使用该服务,开发人员都不会反对将服务 bean 作为 Autowiring 的类成员。

顺便说一句,在每个方法中执行 new ClassPathXMLApplicationContext("spring-bean-name.xml") 绝对是 100% 错误的做法它。这涉及每次执行该方法时创建一个新的 bean-factory 和 bean-context,这是很大的开销并且完全没有必要。 bean-factory 应该创建一次(如果您处于 servlet 引擎环境中,则使用 DispatcherServlet 或 ContextLoaderListener)。

关于java - 从 Spring MVC Controller 访问服务层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13468672/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com