봄 부팅 응용 프로그램이 있습니다. 응용 프로그램을 시작하기 전에 계산 된 속성을 만들고 싶기 때문에 빈 속성을 재정의해야한다고 생각합니다. 내 YAML 구성 파일에서
#this property needs to be calculated
myport:
port: 123
server:
port: ${myport.port}
그러나 응용 프로그램을 시작한 후 server.port 속성의 값은 123 이지만이 값을 원하지 않는 경우 myport 값을 특수 방법으로 계산 하고 싶습니다 .
나는 빈 (아래 그림 참조)을 작성하려고했지만 작동하지 않습니다. 123이 아닌 9999로 설정해야합니다.
@ConfigurationProperties(prefix = "myport", ignoreUnknownFields = true)
public class ServerPortConfigurationBean extends ServerProperties {
@Override
public Integer getPort() {
return super.getPort();
}
@Override
public void setPort(Integer port) {
super.setPort(9999);
}
}
서버의 포트를 변경하려면 서버 시작 전에 속성을 제공해야합니다.
application.yml을 다음과 같이 변경하십시오.
server:
port: ${myport}
다음과 같이 processResources 작업을 통해 속성을 제공 할 수 있도록 등급을 사용합니다.
task calculateServerPort {
// calculate your port here
// if you really need business logic in Java for calculation, you could use the javaExec task in here
project.ext.myport = 8007 // make it available as project.property here
}
processResources {
dependsOn(calculateServerPort)
expand project.properties
}
bootRun {
addResources = false
}
의 addResources
속성을 bootRun
to로 설정 false
하면 프로젝트의 정적 빌드 디렉터리에서 리소스가로드 된다는 사실에 유의 하세요. 그러나 어쨌든 Spring-Boot에서 리소스 처리가 작동하도록하는 것은 필수입니다.
Java 작업 (javaExec과 함께 사용)의 결과를 캡처하는 방법에 대한 자세한 정보가 필요한 경우 여기에서 찾을 수 있습니다 .
포트 (그리고 가장 무거운 포트)를 계산하기 위해 Java에서 비즈니스 로직이 필요한 경우 마지막 옵션은 물론 사용자 정의 등급 플러그인을 제공하는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다