inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Spring Boot - Nguyên lý cốt lõi và ứng dụng

외부설정 @ConfigurationProperties의 내부 클래스에서 static을 사용하는 이유를 알고 싶습니다.

Đã giải quyết

103

sermayar7997

4 câu hỏi đã được viết

0

외부 설정 쪽을 보고 있는데요.

application.yml 에서 설정한 값을 safe 하게 사용하기 위한 코드인데요.

내부 클래스에 static 을 사용한 이유가 있을까요?

 

@Data

@ConfigurationProperties("my.datasource")

public class MyDataSourcePropertiesV1 {

private String url;

private String username;

private String password;

private Etc etc = new Etc();

@Data

public static class Etc {

private int maxConnection;

private Duration timeout

private List<String> options = new ArrayList<>();

}

}

 

spring spring-boot prometheus grafana

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 불꽃맨님.

Spring에서 @ConfigurationProperties를 사용하는 경우, 외부 설정을 객체로 바인딩하여 안전하게 사용할 수 있습니다. 내부 클래스에 static 키워드를 사용하는 이유는 주로 다음과 같습니다:

  1. 독립성 유지: static으로 선언된 내부 클래스는 바깥 클래스(MyDataSourcePropertiesV1)의 인스턴스와 독립적으로 존재할 수 있습니다. 이는 바깥 클래스의 인스턴스를 생성하지 않고 내부 클래스를 쉽게 사용할 수 있게 해줍니다.

  2. 메모리 효율: 필요하지 않은 경우 바깥 클래스의 인스턴스를 만들지 않아도 되므로 메모리 사용 관점에서도 이점이 있습니다.

  3. 간단한 접근: 외부에서 이 내부 클래스를 사용하거나 테스트할 때 바깥 클래스의 인스턴스를 참조할 필요 없이 Etc 클래스를 독립적으로 사용할 수 있습니다.

이러한 점에서 static 키워드는 코드를 보다 효율적이고 깨끗하게 유지하는 데 도움을 줍니다. 비슷한 개념을 다룬 질문이 있어 링크를 통해 추가적인 정보를 얻을 수 있습니다:

  • static class 설정파일. 이 게시물에서 스프링 설정 시 static class를 사용하는 이유와 장점에 대해 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

보안이 엄격한 데이터

0

71

1

MyProperties 자체를 클라이언트 코드에서 사용

1

42

1

http://localhost:8080/actuator/prometheus

0

84

3

jar 추가에대한 질문드려도될까요?

0

62

1

build.gradle bom link 변경

0

63

2

@Counted 초기화

0

47

1

@Validated를 적용해도 빈 검증이 안되는 경우에 대한 조치 공유..

0

99

2

springboot에서 actuator없이 micrometer를 사용할수 있나요?

0

67

1

@Configuration 질문드립니다.

0

84

2

[공유] 터미널 말고 IDE 에서 jar 실행하기

0

96

1

localhost:8080/hello-servlet 404오류

0

123

2

내장톰캣2 서블릿 톰켓 실행이 안됩니다

1

152

2

최대 Tomcat 스레드 수를 확인하는 지표

0

159

1

mac m2에서 startup.sh 실행후 아무 반응이 없습니다.

0

94

2

내장 톰캣 실행 오류 관련 질문드립니다.

0

156

1

스프링 발전 과정들도 자세히 알아둬야하나요??

1

126

1

스프링부트 ioc 컨테이너 갯수

0

89

1

404 페이지

0

133

3

actuator 호출시 타임스탬프 질문

0

90

1

순수 라이브러리 사용하기 2 - memory-v1

0

124

1

서블릿 컨테이너 초기화1 강의 관련 질문입니다~

0

90

1

Thread Config Max 패널 설정 변경 질문

0

123

1

스프링 액츄에이터 shutdown 엔드포인트 활성화가 안됩니다.

0

103

1

테스트 실행시 동일 오류 3가지 발생

0

180

1