아빠는 개발자

[java] Value annotation 본문

Java

[java] Value annotation

father6019 2025. 2. 1. 23:30
728x90
반응형

org.springframework.beans.factory.annotation.Value;

 

우선 스프링 

@Value 어노테이션은 Spring Framework에서 속성 값을 주입하기 위해 사용하는 어노테이션,

주로 application.properties 또는 application.yml에 정의된 값을 가져와 클래스 필드에 바인딩할 때 사용.

 

사용법 

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class AppService {

    @Value("${app.name}")
    private String appName;

    public void printAppName() {
        System.out.println("App Name: " + appName);
    }
}

 

프로퍼티가 있다면 application.properties

app.name=MyApplication

 

기본값 설정

프로퍼티가 존재하지 않을 경우 기본값을 설정할 수 있음

@Value("${app.version:1.0.0}")
private String appVersion;
 

위 코드에서 app.version이 정의되지 않으면 기본값 1.0.0이 주입됨.

SpEL (Spring Expression Language) 활용

문자열 결합 및 조건문에도 활용 가능합니다.

@Value("#{systemProperties['user.home']}")
private String userHome;

@Value("#{2 + 3}")
private int sum;

 

리스트 및 배열 주입

 

@Value("#{'${app.supported-languages}'.split(',')}")
private List<String> supportedLanguages;

application.properties

app.supported-languages=en,fr,de,es

5. Environment 객체 대안 사용

Environment 객체로 프로퍼티를 직접 읽는 것도 가능합니다.

import org.springframework.core.env.Environment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class AppService {

    @Autowired
    private Environment environment;

    public void printAppName() {
        String appName = environment.getProperty("app.name");
        System.out.println("App Name: " + appName);
    }
}
 

주의사항

  • 반드시 Spring 컨텍스트에서 관리되는 빈에만 동작합니다.
  • 값이 설정되지 않으면 @Value 주입 시 예외가 발생할 수 있으므로 기본값 설정이 권장됩니다.

 

728x90
반응형