[Spring] Note2. @Configuration @Value

2026. 2. 19. 11:42·🌱 Spring Framework
반응형

Note1. @Configuration & @Value Annotation

@Configuration

해당 클래스가 스프링의 설정 정보를 담고 있음을 나타낸다. 

스프링 컨테이너는 @Configuration 어노테이션이 붙은 클래스를 스프링빈 정의를 위한 소스로 사용하며, 내부적으로는 CGLIB 라이브러리 내부의 프록시 객체를 생성해 @Bean이 여러번 호출되더라도 언제든지 동일한 싱글톤 객체를 반환하도록 보장해준다. 

 

@Value 

외부 설정 파일 application.propeties, application.yml 과 같이 시스템 환경 변수에 정의된 값을 필드나 파라미터에 주입할 때 사용한다. 

${property.name} 형식으로 사용하며 스프링이 관리하는 객체 안에서만 동작한다는 점에 유의하자.

(new, static 같이 직접 생성한 객체에서는 값이 주입되지 않는다) 

 

Note2. @Value는 어떻게 설정값을 읽어오는가 

스프링은 애플리케이션 실행 시 설정 파일을 찾아 로드한다. 

스프링 부트 내부의 PropertySourceLoader Component는 application.yml, application.properties 같은 파일을 읽어 Key-Value 형태로 PropertySource 객체에 담아 "Enviroment Interface"에 저장한다. 

Enviroment에는 application.yml, 시스템 환경변수, 명령줄 인수 등 다양한 환경값이 통합되어 관리된다. 

따라서 application.yml은 스프링 빈이 아니더라도 @Value가 값을 읽어올 수 있는 것이다. 

 

Note3. S3 Example Code 

다음은 AWS의 S3서비스를 사용하기 위해 정의한 S3Config 코드이다. 

@Configuration
public class S3Config {

    @Value("${aws.s3.access-key}")
    private String accessKey;

    @Value("${aws.s3.secret-key}")
    private String secretKey;

    @Value("${aws.s3.region}")
    private String region;

    @Bean
    public S3Client s3Client() {
        AwsBasicCredentials awsCredentials = AwsBasicCredentials.create(accessKey, secretKey);
        
        return S3Client.builder()
                .region(Region.of(region))
                .credentialsProvider(StaticCredentialsProvider.create(awsCredentials))
                .build();
    }
}

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'🌱 Spring Framework' 카테고리의 다른 글

[Spring] Note1. Flyway Setting  (0) 2026.02.15
[Spring] Note0. ResponseEntity  (0) 2026.02.14
'🌱 Spring Framework' 카테고리의 다른 글
  • [Spring] Note1. Flyway Setting
  • [Spring] Note0. ResponseEntity
novs
novs
https://github.com/novvvv
    반응형
  • novs
    nov.Zip
    novs
  • 전체
    오늘
    어제
    • All (380)
      • Project (2)
        • Rag Blog (2)
      • 🌱 Spring Framework (27)
        • Java Fundamental (13)
        • SpringSecurity (1)
        • Multi Thread Programming (3)
        • Spring Framework (3)
        • JPA (4)
      • 🔓 Security (1)
      • Cloud (2)
        • Docker (1)
        • AWS (1)
      • Mobile Development (0)
      • dev (7)
        • Git (2)
        • React (2)
        • Android (1)
        • Computer Science (2)
      • Algorithm (29)
        • PS With C++ (8)
        • Algorithm (2)
        • BOJ (16)
        • AtCoder (3)
      • Archive (312)
        • 동아리 사이트 개발일지 (3)
        • 카페 주문 시스템 (3)
        • UIKit (2)
        • Swift Language (3)
        • PS With Swift (2)
        • Next.js (3)
        • React (2)
        • Git (1)
        • Linux (3)
        • Vue.js (2)
        • Flutter (11)
        • ...2022 (34)
        • ...2024 (2)
        • C# (14)
        • C&C++ (47)
        • GameDevelop (19)
        • WEB (32)
        • CS (7)
        • Algorithm (13)
        • ProblemSolving (105)
        • Daily (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    STL
    백준
    프로그래머스
    javascript
    스택
    C++
    C++문법
    유니티
    소스코드
    C
    C언어
    c#
    알고리즘
    다이나믹프로그래밍
    BOJ
    문제풀이
    js
    dp
    자바스크립트
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
novs
[Spring] Note2. @Configuration @Value
상단으로

티스토리툴바