springMVC读取application.properties内容

本文介绍了两种在SpringMVC中读取application.properties内容的方法:一种是通过注解直接引用,另一种是利用ResourceBundle读取文件。在注解方式中,直接在代码中使用@Value注解获取配置。而在ResourceBundle方式下,文件存放在指定路径,通过POM配置并在代码中创建ResourceBundle实例来读取属性。

方法一:注解

application.properties中内容:

application.ats.aliyun.oss.bucketName=atsw

使用时:

@Value(value = "${application.ats.aliyun.oss.bucketName}")
public String bucketName;

方法二:读取文件ResourceBundle


文件位置: webapp -> src -> main -> resources -> properties -> dev -> application.properties

application.properties中内容:

application.ats.aliyun.oss.bucketName=atsw

根POM里面设置:

<profile>
    <id>dev</id>
    <properties>
        <deploy.type>dev</deploy.type>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

使用:

ResourceBundle applic = ResourceBundle.getBundle("properties/application");
if(null == applic) return "";
String bucketName = applic.getString("application.ats.aliyun.oss.bucketName");


















<think>嗯,我现在需要确定哪些选项和SpringBoot的自动配置有关。题目给出的选项是A(application.properties)、B(@EnableAutoConfiguration)、C(@SpringBootApplication)、D(META-INF/spring.factories)。首先,我得回忆一下SpringBoot自动配置的相关知识。首先,application.properties这个文件我知道是用来配置应用程序属性的,比如端口号、数据库连接等。Spring Boot的自动配置通常会根据这些属性来调整行为,所以可能这个文件有关联。比如设置server.port=8080就会覆盖默认的端口。所以A选项应该是相关的。接下来是@EnableAutoConfiguration注解。根据之前学的内容,这个注解是Spring Boot自动配置的核心。它告诉Spring Boot根据类路径中的jar包依赖自动配置应用。比如,如果classpath里有SpringMVC的依赖,就会自动配置DispatcherServlet。所以B选项肯定是正确的。然后是@SpringBootApplication注解。记得这个注解是一个组合注解,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。也就是说,它实际上已经包含了@EnableAutoConfiguration,所以使用这个注解的主类会自动启用自动配置。因此C选项也是相关的。最后是META-INF/spring.factories文件。这个文件在Spring Boot中用于自动配置的机制,特别是通过SpringFactoriesLoader来加载配置类。在spring.factories中定义的EnableAutoConfiguration条目下列出了所有自动配置类,Spring Boot启动时会读取这些类并根据条件判断是否生效。例如,spring-boot-autoconfigure模块中的这个文件就列出了很多自动配置类。所以D选项也是正确的。 现在需要确认这些选项是否都正确。根据用户提供的引用,引用[3]提到Spring Boot从META-INF/spring.factories获取自动配置类,所以D正确。引用[2]详细说明了@EnableAutoConfiguration的作用,B正确。引用[1]和引用[3]都提到@SpringBootApplication包含@EnableAutoConfiguration,所以C正确。而application.properties用于覆盖自动配置的默认设置,属于配置的一部分,所以A也正确。因此四个选项都是正确的。</think>### Spring Boot自动配置相关文件与注解解析 #### 一、核心文件与注解的作用 1. **`META-INF/spring.factories`** - **作用**:定义自动配置类的注册清单,是Spring Boot自动配置的元数据来源。Spring Boot启动时通过`SpringFactoriesLoader`加载这些配置类,并按条件决定是否生效[^3]。 - **示例**: ```properties # 在spring-boot-autoconfigure中定义 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration ``` 2. **`application.properties`/`application.yml`** - **作用**:覆盖自动配置的默认参数(如数据库连接、服务器端口等)。例如: ```properties server.port=8081 spring.datasource.url=jdbc:mysql://localhost:3306/mydb ``` - **关联性**:虽然不直接参与自动配置的加载逻辑,但通过属性值调整自动配置的行为[^1]。 3. **`@EnableAutoConfiguration`** - **作用**:启用自动配置机制,根据依赖自动创建Bean。其核心通过`@Import(AutoConfigurationImportSelector.class)`加载`spring.factories`中的配置类[^2]。 - **示例**: ```java @Configuration @EnableAutoConfiguration // 启用自动配置 public class AppConfig { /* 自定义配置 */ } ``` 4. **`@SpringBootApplication`** - **作用**:组合注解,包含`@EnableAutoConfiguration`、`@ComponentScan`和`@Configuration`。标注在主启动类上,触发自动配置和组件扫描[^1][^3]。 - **代码示例**: ```java @SpringBootApplication // 包含@EnableAutoConfiguration public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` --- #### 二、选项关联性总结 | 选项 | 是否相关 | 原因 | |------|----------|------| | A(application.properties) | ✅ | 覆盖自动配置的默认参数 | | B(@EnableAutoConfiguration) | ✅ | 自动配置的核心触发注解 | | C(@SpringBootApplication) | ✅ | 包含@EnableAutoConfiguration | | D(META-INF/spring.factories) | ✅ | 自动配置类的注册清单 | --- #### 三、自动配置流程示意图 ```plaintext 启动类 → @SpringBootApplication → @EnableAutoConfiguration → 加载spring.factories → 按条件筛选配置类 → 应用配置 ``` --- ### 相关问题 1. **如何通过`spring.factories`自定义自动配置?** 2. **`@ConditionalOnClass`注解在自动配置中如何工作?** 3. **如何排除特定的自动配置类?** 4. **`application.properties`和`@ConfigurationProperties`的关系是什么?** 5. **为什么说`@SpringBootApplication`是组合注解?**[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值