gpt4 book ai didi

java - 需要澄清引导 Spring Boot 应用程序的推荐方法

转载 作者:行者123 更新时间:2023-12-01 10:09:36 26 4
gpt4 key购买 nike

在 Java 文档中 SpringApplication ,其中提到:

SpringApplications can read beans from a variety of different sources. It is generally recommended that a single @Configuration class is used to bootstrap your application [...]

此声明是否意味着建议应用仅拥有一个 @Configuration,还是说它是建议将已用 @Configuration 注解的类传递给 SpringApplication(例如其 run 方法)——而不对@Configuration 类的数量?

而且我发现该声明的其余部分很难解释:

[...] however, any of the following sources can also be used:

  • Class - A Java class to be loaded by AnnotatedBeanDefinitionReader
  • Resource - An XML resource to be loaded by XmlBeanDefinitionReader, or a groovy script to be loaded by GroovyBeanDefinitionReader
  • Package - A Java package to be scanned by ClassPathBeanDefinitionScanner
  • CharSequence - A class name, resource handle or package name to loaded as appropriate. If the CharSequence cannot be resolved to class and does not resolve to a Resource that exists it will be considered a Package.

虽然我之前使用过 SpringApplication.run 没有任何问题,但现在阅读它的 JavaDocs 描述让我完全困惑了。

最佳答案

我是这样理解的:

a single @Configuration class is used to bootstrap your application

您应该有一个 @Configuration 类,它是应用程序的根配置。

这使得配置更容易理解和调试。当然您可以使用@Import导入其他配置。

实际上,您可能对测试和生产有不同的根配置。但您将始终仅使用一个作为起点。

however, any of the following sources can also be used:

该部分描述了可以使用哪种类型的源来创建应用程序上下文。这些源可以传递给构造函数:

public SpringApplication(Object... sources)

或二传手:

public void setSources(Set<Object> sources)
  • Class - 用@Configuration注释的类
  • 资源 - 带有 spring 配置的 xml 文件
  • 包 - 将扫描以查找配置的包
  • CharSequence - 包含类或包名称的字符串。这允许例如使用编译时不可用的配置类。

我个人从未配置过为构造函数或 setter 提供源的 SpringApplication。我有一个根配置并用 @Import 注释我的 SpringApplication 类。

关于java - 需要澄清引导 Spring Boot 应用程序的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36217347/

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