【问题标题】:Use of Bean configuration XML FileBean配置XML文件的使用
【发布时间】:2020-07-13 13:29:06
【问题描述】:

我是 Spring 框架的新用户。在理解核心弹簧框架和弹簧启动之间的区别时,我遇到了一些困惑。据我了解,Spring boot 是一个自动执行初始设置的框架(例如设置 Maven 依赖项和下载 jar 文件),并附带一个嵌入式 Tomcat 服务器,只需单击一下即可部署。 Spring MVC 需要手动设置。我为核心 spring 观看的所有教程都显示了使用 bean 工厂的 bean 配置,它使用 .XML 文件配置 bean。在 Spring boot 中,这个 bean 配置文件是不存在的。我的问题是,这个bean配置文件有什么用?在使用 spring 制作 REST 服务时,我没有发现该文件的任何合法用途。在创建 Web 应用程序时,我没有看到任何使用 Application Context、Bean Factory 的情况。有人可以指出如何在 Spring Web 应用程序中使用 bean factory 吗?除了附加组件之外,核心弹簧和弹簧靴之间是否有任何根本区别?

【问题讨论】:

    标签: java xml spring spring-boot spring-mvc


    【解决方案1】:

    Spring 应用程序上下文本质上是 bean(服务对象,包括控制器、转换器、数据访问对象等)和定义应用程序的相关信息的“池”;我推荐the reference introduction。从理论上讲,您可能会因为上下文设置和分层组织等而变得复杂,但在大多数实际情况下,您只有一个简单的上下文。

    在此上下文中,您需要安装所有为您的应用程序提供逻辑的 bean。有几种可能的方法可以做到这一点,但两种主要方法是为 XML 文件提供诸如 bean(定义单个 bean)或 component-scan(自动搜索具有某些注释的类,包括 @Controller)之类的指令并通过使用带有@Configuration 注释的Java 类,它可以使用注释和@Bean 方法。

    XML 样式通常较旧,而较新的应用程序大多使用 Java 配置,但两者都提供收集到上下文中的条目,您可以同时使用两者。但是,在任何应用程序中,您都必须提供一些方法来开始注册,并且您通常会有一个“根”XML 文件或配置类,然后导入其他 XML 文件和/或配置类.在旧的基于 web.xml 的应用程序中,您可以在 servlet 配置文件中指定这一点。

    正如您所说,Spring Boot 本质上是一个现成的配置类的集合,以及一种自动检测配置并激活它们的机制。但是,即使这也需要配置根!这是@EnableAutoConfiguration 指令,经常通过其复合@SpringBootApplication 使用。一旦 Boot 找到它们并将它们拉入,应用程序上下文和配置机制就会正常工作。Spring 知道从哪里开始,因为你给它一个明确的指令来构建一个从该入口点开始的上下文,通常使用 SpringApplication.run(MyApplication.class, args)

    嵌入式服务器配置恰好是一组非常有用的特定配置,它带有一个引导启动程序包。在非引导应用程序中,您无法做任何事情。

    【讨论】:

    • 感谢您的回答。我只是想知道如何在 SpringBootApplication 中使用 bean。我用来存储信息的类是映射到数据库中关系的 java 持久对象实体。它们是豆子吗?我对 bean 在实际网络应用程序中的效用感到非常困惑。
    • @Ricky 在 Spring 和 CDI 中,将“bean”视为“服务对象”。代表业务数据的对象不是“bean”,但进行数据库访问的对象是(Spring Data 可以为您创建它们)。在 Spring/CDI 中,bean 做事。在 Web 应用程序中,您的控制器是 bean,您的请求过滤器(例如,身份验证)是 bean,您的错误处理程序是 bean,您的数据访问对象是 bean,您的格式化程序(JSON 转换器和类似的)是 bean,您的验证器是 bean .
    猜你喜欢
    • 2011-06-21
    • 2014-10-19
    • 1970-01-01
    • 2013-10-10
    • 2015-02-02
    • 2017-01-20
    • 1970-01-01
    • 2016-01-05
    • 2011-03-21
    相关资源
    最近更新 更多