Spring Framework 에서 사용되는 어노테이션으로, 프로퍼티 파일이나 시스템 환경 변수, 스프링의 빈 정의에서 특정 값들을 주입하기 위해 사용됨. 이 어노테이션은 스프링의 의존성 주입 기능의 일부로, 주로 어플리케이션 설정값이나 환경 변수를 클래스의 필드에 주입할 때 사용됨
@Value 를 사용하면, application.properties 나 application.yml 등의 프로퍼티 파일에 정의된 값을 클래스의 필드에 주입할 수 있음.application.properties 파일app.name=MySpringApp
app.version=1.0.0
Java 클래스
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.version}")
private String appVersion;
public String getAppName() {
return appName;
}
public String getAppVersion() {
return appVersion;
}
}
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value("${app.description:Default Description}")
private String appDescription;
public String getAppDescription() {
return appDescription;
}
}
app.description 프로퍼티가 설정되지 않은 경우, 기본값인 "Default Description" 이 appDescription 에 주입됨
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class SystemConfig {
@Value("${JAVA_HOME}")
private String javaHome;
public String getJavaHome() {
return javaHome;
}
}
이 경우, 시스템 환경 변수 JAVA_HOME 의 값이 javaHome 필드에 주입됨
${} 형식을 사용하여 프로퍼티 값을 참조함: 뒤에 기본값을 지정할 수 있음@Value 는 주입된 값을 필드의 타입에 맞게 자동으로 변환함. 예를 들어, int, boolean, List 와 같은 타입으로도 주입 가능application.properties
app.timeout=5000
app.feature.enabled=true
Java 클래스
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ComplexConfig {
@Value("#{${app.timeout} > 1000 ? 'Timeout is sufficient' : 'Timeout is too low'}")
private String timeoutMessage;
@Value("#{${app.feature.enabled} ? 'Feature is enabled' : `Feature is disabled`}")
private String featureStatus;
public String getTimeoutMessage() {
return timeoutMessage;
}
public String getFeatureStatus() {
return featureStatus;
}
}
@Value 를 통해 환경별로 다른 프로퍼티 값을 주입할 수 있음.@Value 로 주입하여 사용함