- join
- AWS
- 데이터베이스
- static
- ORM
- spring mvc
- DI
- 프로그래머스
- select
- SSL
- Docker
- 1차원 배열
- nginx
- @transactional
- 자바
- spring security 6
- Django
- 스프링부트
- springboot
- hibernate
- 스프링
- 문자열
- string
- mysql
- PYTHON
- java
- jpa
- sql
- spring
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
개발하는 자몽
[Spring] @Value과 static 변수 본문
일반적으로 Spring 애플리케이션에서 application.yml에 정의된 값을 static 변수에서 사용할 수 없다. 따라서 Spring에서 제공하는
Java의 static 변수는 아래 시점에 메모리에 저장된다.
- 스프링 컨테이너(Application Context)가 로드되기 전 == 객체 생성 이전 == 의존성 주입을 받기 전
하지만
일반적인 주입 방법이 아닌 다른 방법을 사용하면 static 변수에 설정 값을 주입할 수 있다.
@PostConstruct
@Component
public class DemoConfig {
@Value("${demo.config.property}")
private String demoProperty; // 인스턴스 변수인 여기에 먼저 주입
public static String STATIC_DEMO_PROPERTY;
@PostConstruct // 빈 초기화 이후 호출되어, 인스턴스 변수에 주입된 값을 static 변수에 할당
public void setup() {
STATIC_DEMO_PROPERTY = demoProperty;
}
}
Setter
setter 메서드를 이용하여 static 변수에 값을 할당할 수 있다. 이전 방법과 달리 Spring이 값을 주입할 때 static 변수에 값을 바로 할당할 수 있다.
@Component
public class DemoConfig {
private String demoProperty;
public static STATIC_DEMO_PROPERTY;
@Value("@{demo.config.property}")
public setDemoProperty(String demoProperty) {
DemoConfig.STATIC_DEMO_PROPERTY = demoProperty;
}
}
'Java & Kotlin > Spring' 카테고리의 다른 글
[Spring Security] OAuth2 카카오 로그인 구현 with JWT (0) | 2024.12.29 |
---|---|
[Spring Data JPA] 하이버네이트 Batch Size (0) | 2024.11.25 |
[JPA Error] No EntityManager with actual transaction available for current thread - cannot reliably process 'flush' call (0) | 2024.10.23 |
[JPA] 임베디드 타입(@Embeddable, @Embedded)에 관하여 (0) | 2024.08.23 |
[Spring Boot / Error] Required request body is missing (0) | 2024.07.13 |