Spring MVC:Spring Bean如何工作?

aku*_*ma8 2 spring-mvc

现在2个月,我决定根据MVC模式开发一个Web应用程序.

我来自嵌入式程序(C/C++),所以我将逐步学习Java.

到目前为止,我正在手工完成所有应用程序开发,即我将所有Servlet都放在一个包中,将我的JavaBean放在一个包中,将my(JPA)实体放在另一个包中,并将相同的DAO层放在一个包中.到目前为止一切顺利,我明白我在做什么,一切运作良好.

为了" 促进 "开发和更快地做事,我决定使用Spring MVC(我听说这个框架很好)但是在这里我遇到了一些理解Spring Bean概念的问题.

以下是我对此的疑问:

什么是Spring Bean?(我已经读过这个了,但它没有告诉我如何使用它?)(对我来说,一个Bean只是一个简单的Java类,它尊重一些规则但是当我看一个Spring Bean它完全不同时,我看到一些Spring代码在哪里他们的bean返回了一个对象,为什么他们称之为"Bean",我很困惑),所以.

Spring Bean在SpringMVC的工作流程中涉及哪些方面?

应用程序应该在哪里放置Spring Beans?

如何以及何时使用它?

我在我的应用程序的业务部分使用JavaBeans,例如从表单中检索字段,是否可以使用Spring Beans执行相同的操作?

由于Spring Bean的配置似乎遇到困难(因为我无法理解后面的机制)我们可以使用Spring MVC创建一个Web应用程序而不使用单个Spring bean(当然除了DispatcherServlet)?

为什么使用SpringBean而不是Java Bean?

Spring Bean还有什么?

我意识到Spring MVC并不是那么简单,需要掌握很多东西,特别是很多配置.

从哪儿开始?

我应该放弃使用Spring MVC吗?

我在网上搜索了解但我找不到任何能够详细解释的东西.

谢谢.

PS:对不起我的英语,我住在法国.

Jan*_*yka 6

java bean和spring-managed bean是不同的东西.Java bean确实是一些具有特定命名约定的对象,其中spring bean是不同的.

spring指的是(spring managed)bean只是一个类的实例,生命周期由Spring框架管理.它不必遵循Java bean命名约定等.bean的最直接用法是依赖注入.您可以将这样的spring-manged对象(bean)注入其他bean - 例如控制器.

您有几种方法来创建bean.它在文档中很好地描述.

请注意,从弹簧的角度来看,即使控制器只是另一个碰巧有一些额外功能的bean.

要开始,我会使用一些spring-boot示例应用程序.它为您节省了大量配置,这通常是一个很好的起点.


Tay*_*lor 5

让我先尝试解释一下 Spring Framework 的要点。

Spring 基于控制反转(IoC)的概念。这个概念基本上意味着功能bean在接口中表达它们的依赖关系,并且某些东西(在本例中是Spring)负责注入正确的实现。

例如假设我有一个UserRepository(界面)。我有两种实现, aMySqlUserRepository和 a MongoDbUserRepository,因为我的客户可以选择这两种存储技术之一。假设现在我有多个消耗UserRepository. 为了避免让他们都知道我们正在使用哪个 impl,消费者只表达他们需要一个UserRepository(通常通过@Injector@Autowired注释),并且我利用这个框架在初始化时注入正确的 impl。

这就是Spring框架的要点。这些对象(UserRepository impl 和消费者)是 Spring 管理的 bean,或者更简洁地说,Spring Bean。Spring 管理它们的生命周期并将它们连接在一起。

Spring MVC 是一个基于 Spring 框架构建的 MVC 框架。也就是说,您的 MVC 制品(控制器等)是 Spring Bean。

Spring 通常应该管理所有无状态对象(在某些情况下可能有充分的理由不这样做,但这超出了本答案的范围)。有状态对象是无状态对象所管理的对象。Spring 管理管理状态的对象。

Spring 是一个非常强大的框架,有很多附加组件,java 生态系统中的大多数包至少都有一个关于如何让它们与 Spring 一起工作的教程,如果不是开箱即用的集成。