首页 > 解决方案 > Spring MVC 中如何使用 IoC 和 DI

问题描述

我正在学习这门关于 Spring Hibernate 等的 udemy 课程。该课程首先解释了控制注入和依赖注入如何在 Web 透视图中工作,就像拥有简单的类或 bean、在配置 xml 文件中定义 bean 及其依赖项或在实际类中使用 java 注释,然后是创建 bean 的主类。我明白,尽管没有真正看到使用 IoC 和 DI 的巨大好处,但除了分离创建和维护对象以及添加对象所需的依赖项等角色之外,我猜当项目更大时,这会使它更清晰、更容易遵循,对吧?

但是我不明白的是 IOC 和 DI 在一个完整的春季 MVC 项目中是如何联系的。就像我理解的那样,使用 @Controller 注释意味着它就像一个 @Component 并且您可以让它在创建 bean 时自动扫描组件,但与以前不同的是,没有创建和配置 bean 的主类,而是我有一个控制器类我手动创建对象和模型并将其传递回可以使用模型中的值的视图。我看不到我在这里如何使用 IoC 或 DI?或者是因为它是一个简单的项目,也许我们创建的对象没有很多依赖关系?或者很多使用和实现是内部完成的还是自动完成的?

我只是在努力 a) 了解为什么 IoC 和 DI 如此重要,以及 b) 在没有创建 bean 的主类的 Spring MVC 项目中,它们是如何实际使用的。

标签: javaspringspring-mvcdependency-injectioninversion-of-control

解决方案


A) 创建一个项目,但不要添加任何依赖项(或 web-mvc)。然后自己做,然后看看手动创建配置需要多少时间。如果它只是一个简单的 mvc 项目,你可以手动完成,但如果你的项目每天增加,那么一个巨大的配置文件来正确维护你的项目。但是,当您是专业开发人员时,您没有太多时间手动配置所有这些。所以这里是解决方案 IoC 和 DI。控制器或其他注释在内置 jar 中配置。您不必担心创建控制器或创建 bean,只需在需要时使用它们。它可以节省您的时间,也可以为它是否工作而头疼。当您从事大型项目时,它可以提高您的工作效率。

B)是的,web 项目中没有主类。要运行 Web 项目,您需要一台服务器。服务器首先寻找配置(在春季,它是web.xmldispatcher-servlet)。如果可用则展开配置文件,如果不可用则抛出错误。在该配置文件中,解释有关 Web 项目的所有内容。应该做什么,什么不是强制性的,什么是入口点等。

因此,IoC 和 DI 非常重要,因为要了解 Web 项目如何在幕后工作或所有组件如何协同工作。


推荐阅读