springboot 项目,properties文件存在多个同名的配置,@Value注解会取哪一个
时间: 2024-03-07 08:47:41 浏览: 132
springboot通过@Profile注解配置不同环境
对于Spring Boot项目中存在多个同名的配置的情况,使用`@Value`注解获取属性值时,会取最后一个属性值。具体实现可以参考下面的示例:
1. 在`application.properties`配置文件中添加同名属性:
```
myapp.datasource.url=jdbc:mysql://localhost:3306/mydb1
myapp.datasource.url=jdbc:mysql://localhost:3306/mydb2
```
2. 在需要使用属性的地方使用`@Value`注解注入属性值:
```
@Service
public class MyService {
@Value("${myapp.datasource.url}")
private String url;
public void doSomething() {
System.out.println(url); // 输出:jdbc:mysql://localhost:3306/mydb2
}
}
```
在这个例子中,`@Value`注解获取到的是最后一个同名属性的值,即`jdbc:mysql://localhost:3306/mydb2`。
如果需要获取所有同名属性的值,则可以使用`Environment`对象的`getProperty`方法获取属性值的数组。具体实现可以参考下面的示例:
```
@Service
public class MyService {
@Autowired
private Environment env;
public void doSomething() {
String[] urls = env.getProperty("myapp.datasource.url", String[].class);
System.out.println(Arrays.toString(urls)); // 输出:[jdbc:mysql://localhost:3306/mydb1, jdbc:mysql://localhost:3306/mydb2]
}
}
```
在这个例子中,`Environment`对象的`getProperty`方法获取到的是所有同名属性的值的数组。
阅读全文