我已经编写了一些代码来测试与 mongoDB 的集成。请在下面找到运行此 Spring Boot 应用程序的主要方法的链接,
https://github.com/siva54/simpleusercontrol/blob/master/src/main/java/com/siva/UserManagementApplication.java
根据我的阅读,应用程序应包含以下 URL 中的任何配置,以声明应用程序如何管理上下文,
http://docs.spring.io/autorepo/docs/spring-boot/current/reference/html/using-boot-using-springbootapplication-annotation.html
我没有使用过任何这些上下文,但是我的应用程序运行良好,我可以毫无问题地运行它。我在这里错过了什么吗?您能否提供有关我的应用程序如何自动启动和管理上下文/依赖项的信息?
提前致谢
最佳答案
@SpringBootApplication
相当于 @Configuration
, @EnableAutoConfiguration
和 @ComponentScan
.让我们考虑一下为什么您的应用程序可以在没有这三个注释中的任何一个的情况下工作。
为什么它可以在没有 @Configuration
的情况下工作:
当 Spring 扫描包时,它会找到所有标记为 @Configuration
的类。并将使用它们作为配置的一部分。但在下一行你手动传递了 UserManagementApplication
作为配置源:
SpringApplication.run(UserManagementApplication.class, args);
所以spring不需要通过扫描找到这个类。因此没有必要用
@Configuration
标记它。 .为什么它可以在没有
@ComponentScan
的情况下工作:类(class)
UserManagementApplication
有 @ImportResource("classpath:spring/application-context.xml")
注解。这意味着文件 spring/application-context.xml
将包含在配置中。这个文件包含下一行:<context:component-scan base-package="com.siva.*" />
因此,您不需要对扫描包使用注释,因为您已经在 xml 文件中声明了它。
为什么它可以在没有
@EnableAutoConfiguration
的情况下工作:这个注解允许 Spring 尝试自动猜测和配置组件。例如,如果您在
build.gradle
中包含以下依赖项:dependencies {
compile 'org.springframework.boot:spring-boot-starter-data-mongodb'
}
Spring 自动配置了与 MongoDB 一起工作所需的所有组件。您只需要在
aplication.proprties
中指定主机和用户/密码即可。文件。但是您更喜欢在
spring/application-context.xml
中手动声明所有需要的 bean。文件。所以,你根本不需要 @EnableAutoConfiguration
注释。
关于spring - 我可以从没有注释 componentscan,autoconfiguration,configuration,springbootapplication 的 spring boot 应用程序开始吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42918538/