@Value 어노태이션

데일리·2024년 11월 5일
0

TIL

목록 보기
2/16
post-thumbnail

우리가 스프링으로 개발하다보면 @Component로 등록되어있는 class안에 @Value어노테이션이 붙어 있는 필드들을 볼 수 있다. 그렇다면 이 어노테이션이 하는 역할은 무엇일까?

@Value 어노태이션?

@Value어노테이션은 외부에서 설정된 값 주로 application.yml이나 application.properites에서 설정된 값을 불러와 스프링빈의 필드에 주입될 때 사용된다. 예시를 보면 이해가 빠르게 될 것이다.

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

@Component
public class MyComponent {

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

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

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


//application.properites
app.name=MyApplication
app.version=1.0.0

위와 같이 appName과 appVersion이 application.yml에 정의되어 있다면 해당 값을 가져와서 스프링 빈에 등록을 해준다.

주의할 점

해당 어노테이션은 우리가 자주 사용하지만 주의할 점이 있는데 @Component 어노테이션을 붙여 주어야 한다는 것이다. 만일 @Component를 붙여주지 않는다면 해당 클래스는 컴포넌트 스캔이 대상이 되지 않아 스프링 빈으로 등록되지 않고, @Value 어노테이션 또한 동작하지 않기 때문에 이점을 주의해야한다.

@ConfigurationProperties

또 모든 필드에 @value를 넣어야할 때 번거로울 수가 있다. 이 때 사용하는 어노테이션이 @ConfigurationProperties이다 해당 어노테이션은 특정 설정 값 그룹 전체를 한 번에 클래스에 주입할 때 사용하여 설정 관리가 더 편리하기 때문에 대규모 설정에 주로 사용이 된다.

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "app")
public class AppProperties {

    private String name;
    private String version;

    // Getter와 Setter 추가
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }
}

//application.properites
app.name=MyApplication
app.version=1.0.0

마무리

오늘은 간단하게 @Value어노테이션에 대해 살펴보았고 해당 어노테이션을 주로 사용하지만 스프링 빈 생성주기에 관해서는 제대로 몰랐던 것 같았다. 앞으로 개발을 할 때 이런 빈의 생성주기들을 생각해보면서 개발하면 조금 더 내 개발이 풍성해질거 같다라는 생각을 하며 포스팅을 마친다~

profile
하루에 한편 씩 읽기 좋은 테크 로그

0개의 댓글