为什么春天引导应用程序类需要有@Configuration注释?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么春天引导应用程序类需要有@Configuration注释?相关的知识,希望对你有一定的参考价值。

我正在学习有关Spring框架,但我不明白究竟是什么@Configuration注解装置和类应如此注解。在Spring启动文档据说是应用程序类应该是@Configuration类。

春天引导有利于基于Java的配置。虽然可以调用SpringApplication.run()以XML源,我们一般建议您的主要来源是@Configuration类。

想了解@Configuration我发现注释与@Configuration类指示类可以通过Spring IoC容器被用作bean定义的来源。

如果是这样的话那么这是怎么应用程序类的bean定义源?

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class App 

    public static void main(String[] args) throws Exception 
        SpringApplication.run(App.class, args);    
    

我已经非常了解关于春天最等基本概念,但我不明白@Configuration的目的或类应该@Configuration类?是否有人可以帮助。谢谢 !!

答案

你的理解是正确的。

@Configuration

@Configuration是xml文件的类似物。这样的类是通过定义与@Bean注释方法的bean定义源。

@Configuration是:

  • 不是必需的,如果你调用sources方法时已通过在SpringApplication.run()参数的注解类;
  • 需要,当你不通过注释类明确的,但它是在在你的主要配置类的@ComponentScan注解指定的包。

为了增强可读性,被作为sources甚至明确地传递类可无论如何与@Configuration注解 - 只是为了证明意图更加清晰。

您当前的阶级是不是真正的bean定义来源,因为它没有任何的,但如果你已经@Bean注解的方法,春天会看到他们。

@EnableAutoConfiguration

可以使用或不@Configuration使用。它告诉Spring通过设置你的classpath什么的一些基本的基础设施的判断。它是通过调用该是一个从@Import注解@EnableAutoConfiguration包括价值得出的所谓进口类完成。只有一类应该@EnableAutoConfiguration被标注,复制它不会做任何事情。

这个答案也可能有助于理解Spring启动初始化过程:Which piece of code in Spring Boot actually registers dispatcher servlet for SpringMVC?

另一答案

我认为主要的原因,为什么春启动的@SpringBootApplication注释自动应用@Configuration是允许在非常相同的类中添加bean定义。一个春天启动的主要目标是让你创建应用程序快捷,无需额外的动作。所以,通过允许您添加bean定义权到应用程序的类,你不需要额外创建类来保存您的配置。你只有1级,就是这样。

以上是关于为什么春天引导应用程序类需要有@Configuration注释?的主要内容,如果未能解决你的问题,请参考以下文章

Spring引导外部的外部属性

春天引导摇篮脚本 - 获取mainClassName

Hibernate Sessionfactory 重启 |春天

使用 REST 访问 MongoDB 数据

如何将引导类应用于 css 文件中的每个相同的 HTML 元素?

ChatGPT引爆AIGC,垂类龙头迎来“创新春天”