一尘不染

为什么Spring Boot Application类需要具有@Configuration批注?

spring-boot

我正在学习有关Spring Framework的知识,但我无法理解@Configuration标注的确切含义以及应该对哪些类进行标注。在Spring
Boot文档中,据说Application类应该是@Configurationclass。

Spring
Boot支持基于Java的配置。尽管可以使用XML源调用SpringApplication.run(),但是我们通常建议您的主要源是@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);    
    }
}

我已经基本了解了有关Spring的大多数其他基本概念,但我不明白@Configuration哪个类应该成为@Configuration类的目的?有人可以帮忙吗?谢谢
!!


阅读 266

收藏
2020-05-30

共1个答案

一尘不染

您没看错。

@组态

@Configuration是xml文件的模拟。通过使用@Bean批注定义方法,此类是Bean定义的来源。

@Configuration 是:

  • 不需要 ,如果sources在调用SpringApplication.run()方法时已经在参数中传递了带注释的类;
  • *当您没有显式传递带注释的类,但它在@ComponentScan主配置类的注释中指定的包中时,则为 *required

为了提高可读性,甚至显式传递的类(sources无论如何都可以使用注解)@Configuration-只是为了更清楚地表明意图。

您当前的类并不是真正的bean定义源,因为它没有任何定义,但是如果您有带@Bean注释的方法,Spring会看到它们。

@EnableAutoConfiguration

可以搭配使用或不搭配使用@Configuration。它告诉Spring根据类路径中的内容来设置一些基本的基础结构。这是通过调用所谓的导入类来完成的,该类是从包含的@Import注释的值派生的@EnableAutoConfiguration。只有一个类应该用注释@EnableAutoConfiguration,重复它不会做任何事情。

2020-05-30