META-INF/spring.factories
和 application.properties
或 application.yml
文件都是 Spring Boot 应用程序中非常重要的配置文件,但它们的作用和使用方式有所不同。
META-INF/spring.factories
是一个标准的 Java 服务加载机制,用于在 Spring Boot 启动过程中查找和加载所有的自动配置类。该文件中的每条记录都指定了一个或多个自动配置类的全限定名,这些配置类会在 Spring Boot 启动时被加载并应用到应用程序中。
例如,在 META-INF/spring.factories
中定义了如下的记录:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyAutoConfiguration
这意味着 MyAutoConfiguration 类是一个自动配置类,并且在 Spring Boot 启动时会被加载和应用到应用程序中。
而 application.properties
或 application.yml
则是用于设置应用程序各种配置属性的文件,在 Spring Boot 应用程序中,这些属性通常包括数据库连接信息、服务器端口号、日志级别等等。Spring Boot 会在启动过程中读取这些文件,并将其转换为应用程序运行时需要的相应配置信息。
例如,可以在 application.properties
中定义以下配置属性:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
logging.level.root=INFO
这些属性会告诉应用程序使用 8080 端口监听请求,并连接到名为 mydb 的 MySQL 数据库,并设置根日志记录器的日志级别为 INFO。
在 Spring Boot 应用程序启动时,会首先加载 META-INF/spring.factories
文件中定义的所有自动配置类,并将其应用到应用程序中。这些自动配置类通常会根据应用程序的环境和依赖关系来设置一些默认的配置属性。
然后,Spring Boot 会读取 application.properties
或 application.yml
文件中配置的属性值,并覆盖或补充自动配置类中设置的默认属性值。因此,通过在这些文件中配置自己需要的属性,可以实现自定义配置和覆盖默认配置的功能。