我正在学习 Spring 框架,但我不明白 @Configuration
注释的确切含义以及应该注释哪些类。在 Spring Boot 文档中,据说 Application 类应该是 @Configuration
类。
Spring Boot favors Java-based configuration. Although it is possible to call SpringApplication.run() with an XML source, we generally recommend that your primary source is a @Configuration class.
尝试了解@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
类?有人可以帮忙吗。谢谢!!
最佳答案
你没看错。
@配置
@Configuration
是 xml 文件的模拟。这些类是通过使用 @Bean
定义方法来定义 bean 的来源。注释。
@Configuration
是:
- 不需要,如果您已经通过了
sources
中的注释类调用SpringApplication.run()
时的参数方法; - 必需,当您没有显式传递带注释的类,但它位于
@ComponentScan
中指定的包中时主要配置类的注释。
为了可读性,甚至显式传递为 sources
的类无论如何都可以用 @Configuration
注释- 只是为了更清楚地表明意图。
你当前的类并不是真正的 bean 定义源,因为它没有,但如果你有 @Bean
带注释的方法,Spring 会看到它们。
@EnableAutoConfiguration
可以在有或没有 @Configuration
的情况下使用.它告诉 Spring 根据你在类路径中的内容来设置一些基本的基础设施。这是通过调用从 @Import
的值派生的所谓的导入类来完成的。注释 @EnableAutoConfiguration
包括。只有一个类应该用 @EnableAutoConfiguration
注释,复制它不会做任何事情。
这个答案也可能有助于理解 Spring Boot 初始化过程:Which piece of code in Spring Boot actually registers dispatcher servlet for SpringMVC?
关于java - 为什么 Spring Boot Application 类需要有 @Configuration 注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247487/