일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Selenium
- java crawler
- request cache
- Aggregation
- file download
- 아이온큐
- TSLA
- ann
- IONQ
- vavr
- 양자컴퓨터
- Analyzer
- Elastic
- Cache
- 테슬라
- JPA
- dbeaver
- Query
- Elasticsearch
- NORI
- API
- api cache
- mysql
- redis
- Docker
- elasticsearch cache
- java
- aggs
- aqqle
- KNN
Archives
- Today
- Total
아빠는 개발자
[java] Value annotation 본문
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
반응형
'Java' 카테고리의 다른 글
[java] Value annotation - lombok (1) | 2025.02.01 |
---|---|
[java] VO, DTO, DAO 구성 (0) | 2025.02.01 |
[java] 멀티스레드 최적화 (java application batch) - 테스트 편 (0) | 2024.09.22 |
[java] 멀티스레드 최적화 (java application batch) - 이론편 (1) | 2024.09.21 |
[java] 함수형 프로그래밍(Functional Programming) 은? (0) | 2024.09.02 |