작성
·
70
0
안녕하세요 선생님.
섹션7 자동구성 정보파일 분리 수업 듣던와중에 문득 강의 이해하는 도중 질문이 있어서요.
질문 1). @MyAutoConfiguration 어노테이션을 만드신 후,
DispatcherServletConfig 과 TomcatWebServerConfig 클래스에다가 이걸 붙혀주셨어요.
그리고 그 목적은 @MyAutoConfiguration 에 @Configuration 이 작성되어있기때문에 @MyAutoConfiguration을 어떤 클래스에 붙히면 @Configuration 클래스를 선언한것과 동일한 효과를 갖는다는걸 보여주기 위함이라고 말씀하셨고 그렇게 이해를 했는데요.
@MyAutoConfiguration 를 붙힌 다른 목적과 이유도 있을까요 ?
질문2) 그리고 그 이후에 Test 파일중 ConfigurationTest.java 안에 있는 클래스에 @Configuration 와 proxyBeanMethods = false 속성값을 적용해서 예시로든 생성자가 다르다고 출력되는걸 구현해주셨는데,
저 속성값을 Test 파일이 아닌 일반 java 패키지에 있는
DispatcherServletConfig 나 TomcatWebServerConfig 에 @Configuration 이 붙어있다면, 여기다가도 프록시빈메서드 속성값을 적용시키는 경우도 있을 수 있을까요 ?
질문3). 스프링을 실무에서 사용하지 않아서 학습하고 있는데, 점점 후반부로 갈 수록 구조에 대한 이해보다는 구조 자체를 암기를 해야 그나마 강의를 따라가는 느낌이 드는데,
반복 수강만이 답일까요 ??
답변 2
0
@MyAutoConfiguration은 @Configuration을 메타 애노테이션으로 가지고 있으니 구성정보를 작성하는 클래스라는 것을 스프링에게 알려줄 수 있죠. 그래서 @Bean이나 @Import 등을 사용할 수 있습니다. 동시에 스프링부트의 자동 구성에서 사용하는 구성 정보를 담은 클래스라는 것을 명확하게 하기 위해서 애노테이션을 새로 만든 것입니다. 실제로는 스프링 부트는 @AutoConfiguration이라는 애노테이션을 가지고 있죠. 이걸 흉내내서 만든 것이 @MyAutoConfiguration입니다.
proxyBeanMethods = false은 스프링이 최근에 추가한 방식입니다. @Configuration에서 @Bean이 붙은 메소드를 다른 여러 빈에서 중복해서 호출해서 의존관계 주입(DI)을 하고 있지 않다면 결과적으로 차이는 없습니다. 말씀하신 클래스에 이걸 붙여도 상관없습니다. 스프링이 최근에 proxyBeanMethods = false를 적극적으로 사용하고 있기 때문에 이에 대한 설명을 해봤습니다.
스프링 부트를 이용해서 개발하면서 가질 수 있는 질문과 동작 원리를 모르기 때문에 오해할 수 있는 지점, 그리고 사용하는 기술의 동작 방식에 대한 이해를 돕고자 만든 강의입니다. 단순하게 내용을 외우는 것은 별 도움이 안 될 것입니다. 일단 자동 구성이 어떻게 동작하는지, 지금 적굥된 자동 구성이 어떤 일을 하고 있는지 등이 궁금할 때, 다시 강의 내용을 확인해보시고, 알려드린 방법으로 스프링 부트의 기술을 살펴보시는 경험이 필요합니다. 그래도 제가 중요하다고 강조드린 내용은 기억해두시면 좋겠습니다.
더 궁금하신 내용이 있으면 다시 알려주세요.
0
안녕하세요, 인프런 AI 인턴입니다. hojong1351님, 질문 주셔서 감사합니다.
@MyAutoConfiguration
어노테이션의 추가 목적@MyAutoConfiguration
은 @Configuration
의 메타 애노테이션을 포함하여 자동 구성 클래스로 활용하기 위해 만들어집니다. 이는 여러 설정을 모듈화하여 사용하기 쉬운 결과를 제공하며, 중복된 설정을 줄일 수 있습니다. 스프링 부트의 @SpringBootApplication
과 유사하게, 프로젝트 전반에 걸쳐 사용할 표준 구성 패턴을 제시하는 것입니다.
proxyBeanMethods
속성의 활용@Configuration
에 proxyBeanMethods = false
속성을 사용하는 것은, 프로토타입 빈을 사용할 때 프로토타입 빈의 동작을 좀 더 명확하게 관리하기 위해서입니다. 이는 여러 빈 메소드를 호출할 때 매번 새로운 인스턴스를 반환해야 할 때 유용합니다. 일반적인 설정 클래스에서도 proxyBeanMethods = false
옵션을 지정하여 특정한 빈 생성 전략을 구현하는 것이 가능합니다. 예를 들어, DispatcherServletConfig
나 TomcatWebServerConfig
에서도 필요에 따라 proxyBeanMethods
속성을 활용하여 빈 생성 방식을 조정할 수 있습니다.
스프링과 같은 복잡한 프레임워크를 이해하기 위해 반복적인 학습은 필요할 수 있습니다. 그러나 단순히 암기보다는, 작은 독립 프로젝트나 예제를 통해 직접 코딩하면서 다양한 케이스에 대해 실험해 보시는 과정을 추천드립니다. 그렇게 하면 구조와 설정을 더 자연스럽게 이해할 수 있을 것입니다.
@MyAutoConfiguration
의 설정과 역할에 대해 설명합니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.