>  기사  >  Java  >  springboot에서 application.yml의 값을 얻는 방법

springboot에서 application.yml의 값을 얻는 방법

WBOY
WBOY앞으로
2023-06-03 18:43:131722검색

프로젝트에서는 일부 구성 정보가 필요한 경우가 많습니다. 이 정보는 테스트 환경과 프로덕션 환경에서 구성이 다를 수 있으며 실제 비즈니스 상황에 따라 수정해야 할 수도 있습니다. 이러한 구성은 코드에 하드코딩할 수 없습니다. 예를 들어 이 정보를 application.yml 파일에 쓸 수 있습니다. application.yml 文件中。

springboot에서 application.yml의 값을 얻는 방법

那么,怎么在代码里获取或者使用这个地址呢?有2个方法。

方法一:

我们可以通过@Value 注解的 ${key} 即可获取配置文件(application.yml)中和 key 对应的 value 值,这个方法适用于微服务比较少的情形

springboot에서 application.yml의 값을 얻는 방법

方法二:

在实际项目中,遇到业务繁琐,逻辑复杂的情况,需要考虑封装一个或多个配置类。比如,如果一个业务需要同时使用微服务1、微服务2和微服务3,那么这些微服务将被调用。

如果这样一个个去使用 @Value 注解引入相应的微服务地址的话,太过于繁琐。

也许实际业务中,远远不止这三个微服务,甚至十几个都有可能。对于这种情况,我们可以先定义一个 MicroServiceUrl

springboot는 어떻게 application.yml에서 값을 얻나요?

그래서 , 어떻게 코드에서 이 주소를 얻거나 사용합니까? 2가지 방법이 있습니다.

방법 1:

@Value 주석이 달린 ${key}를 통해 구성 파일(application.yml)의 키에 해당하는 값을 얻을 수 있습니다. 이 방법은 상대적으로 적은 수의 경우에 적합합니다. 상황

springboot는 application.yml에서 값을 어떻게 얻나요?

방법 2:

springboot에서 application.yml의 값을 얻는 방법실제 프로젝트에서 복잡한 비즈니스와 복잡한 로직에 직면할 때 하나 이상의 구성 클래스를 캡슐화하는 것을 고려해야 합니다. 예를 들어 기업이 마이크로서비스 1, 마이크로서비스 2, 마이크로서비스 3을 동시에 사용해야 하는 경우 이러한 마이크로서비스가 호출됩니다. 🎜해당 마이크로서비스 주소를 하나씩 소개하기 위해 @Value 주석을 사용하는 것은 너무 번거로울 것입니다. 🎜🎜실제 비즈니스에는 이 세 가지 마이크로서비스보다 훨씬 더 많거나 심지어 12개 이상이 있을 수도 있습니다. 이 상황에서는 먼저 MicroServiceUrl 클래스를 정의하여 마이크로서비스의 URL을 구체적으로 저장할 수 있습니다🎜
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "url")
public class MicroServiceUrl {

private String orderUrl;
private String userUrl;
private String shoppingUrl;

public String getOrderUrl() {
return orderUrl;
}

public void setOrderUrl(String orderUrl) {
this.orderUrl = orderUrl;
}

public String getUserUrl() {
return userUrl;
}

public void setUserUrl(String userUrl) {
this.userUrl = userUrl;
}

public String getShoppingUrl() {
return shoppingUrl;
}

public void setShoppingUrl(String shoppingUrl) {
this.shoppingUrl = shoppingUrl;
}
}
🎜🎜종속성 추가:🎜🎜
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
🎜현재 구성은 작성되어 있지 않습니다. 코드에 종속성을 추가해야 합니다. 이러한 마이크로서비스의 URL을 하나씩 도입하고 @Resource 주석을 통해 방금 작성한 구성 클래스를 직접 삽입하여 사용합니다. 다음은 테스트 컨트롤러입니다. 🎜🎜🎜🎜
import com.example.test1.config.MicroServiceUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;

/**
* 获取配置文件(application.yml)中和 key 对应的 value 值
* 2种方法
*/
@RestController
@RequestMapping("/test")
public class ConfigController {

private static final Logger LOGGER = LoggerFactory.getLogger(ConfigController.class);

@Value("${url.orderUrl}")
private String orderUrl;

@Resource
private MicroServiceUrl microServiceUrl;

@RequestMapping("/config")
public String testConfig() {
LOGGER.info("获取的地址为:{}", orderUrl);
LOGGER.info("微服务1地址为:{}", microServiceUrl.getOrderUrl());
LOGGER.info("微服务2地址为:{}", microServiceUrl.getUserUrl());
LOGGER.info("微服务3地址为:{}", microServiceUrl.getShoppingUrl());
return "success";
}
}

위 내용은 springboot에서 application.yml의 값을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제