본문 바로가기
개발 잡담

스프링 부트가 해주는 자동 구성을 수정할 수 있는 범위는 어디까지일까?

by 휴일이 2024. 9. 26.

 

 

시작은 사소했다

 

 

 

백엔드 개발자로 일하는 친구와 얘기를 하던 도중

내가 알고 있는 사실과 다른 이야기를 해서 궁금했다.

 

 

 

스프링프레임 워크를 편하게 쓰기 위하여 스프링 부트를 사용하는 것이 아니었던가?

- 내가 남궁성 쌤의 스프링의 정석 강의를 들을 때...스프링 프레임워크를 사용하던 기억이 있었는데

- 진짜 엄청난...설정과 xml 파일 설정들 때문에 넘 힘들었던 기억이 있음 ㅜㅜ

- 이후에 스프링 부트를 사용했을 때 엄청나게..편하고 좋았음.

 

그리고 토비의 스프링 부트 - 이해와 원리 강의를 들었을 때

분명 스프링 부트의 모든 자동 구성은 커스텀 할 수 있다고 들었는데..

내가 알던 것이랑 다른 뭔가 있을까? 해서 찾아보게 되었다.

 

 

 

 

일단 스프링 부트는 스프링을 편리하게 쓸 수 있도록 "Auto Configuration" 을 해준다.

그리고 스프링 부트 3.3.4 documentation 을 확인해보면

나는 영어를 못하니까 크롬 번역을 감사히 사용

 

 

하지만 어떨 땐 영어로 되돌려서 번역 전 문장을 다시 읽어보곤 함.

 

non-invasive. 비침습적.

단어의 뜻을 찾아보았다.

 

 

 

 

주변 영향을 주지 않는다는 뜻임.

 

 

한 마디로 스프링 부트의 자동 설정 구성은 "딱 그 구성"만 해주고, 다른 구성에 영향을 끼치지 않으니

언제든 사용자가 자체 구성을 할 수 있다는 의미로 이해함.

 

 

 

그런데 왜 친구는 내게

"설정할 수 있는 규모는 스프링이 더 크고, 스프링 부트에서는 설정에 제한이 있다." 라고 표현했을까?

 

 

 

 

먼저 한 레딧 링크를 공유한다.

 

https://www.reddit.com/r/java/comments/6byre7/springboot_autoconfiguration_too_much_magic/?rdt=51809

 

From the java community on Reddit

Explore this post and more from the java community

www.reddit.com

 

 

 

이 스레드는 스프링 부트의 자동 구성이 프로젝트를 빠르게 시작하는데에는 유용하지만

자동 구성의 마법 덕분에 내 생각대로 컨트롤하는 것은 어렵다. 라고 말하는 것 같다. (^^)/)

- 정말 싫습니다. 라는 표현이 귀엽다. (원글에선 "really turns me off." 라는 표현을 썼음)

 

 

댓글에는

 

 

이 중에서도 제일 좋아요가 높은 베스트 댓글이 좀 인상 깊었음.

램시스갓...

 

원문은

Is to much magic until you read the Docs, several books and the source code, after that, the magic becomes knowledge.

 

 

 

 

StackOverflow 에도 가보면

스프링 자동 구성을 대체하는데에 어려움을 겪은 사람들의 질문글들이 굉장히 많고

스프링 자동 구성이 편리하지만 그 설정을 바꾸려면 어려움이 많다. 는 답글도 보았다.

 

 

 

사실 스택오버플로우에 질문글을 올렸었는데, 답은 안달리고 ㅠㅠ

봇..이 댓글로 네가 이 질문이랑 똑같은 내용을 질문한 거 아니니? 하면서 링크를 줬는데

내용이 담백하고 좋았다.

 

 

 

 

https://stackoverflow.com/questions/46082827/can-spring-boot-achieve-everything-what-a-spring-mvc-framework-can

 

Can Spring Boot achieve everything what a Spring MVC framework can?

I'm in a situation where I got to recommend to my team whether we should go with Spring MVC Framework or with Spring Boot framework (as this framework has reduced the implementation time to great e...

stackoverflow.com

 

 

 

 

내가 처음 스프링 시큐리티를 접했을 때

DB에 ROLE_NAME 이라고만 하면 권한을 알아서 찾는다고???

그냥 경로만 입력하고 이케이케하면 알아서 그 경로에 접속을 막아준다고??

하면서 오히려 혼란스러웠던 기억이 있다. ㅡ.ㅡ

- 특히 JWT 할 때... 쫌만 커스텀하려고하면 엄~청 힘들어서 쩔쩔맸었던 기억이..

- 그래서 책까지 사서 공부했었음ㅋㅋㅋㅋㅋ

 

 

 

 

확실히 스프링 부트의 Auto Configuration 은 쉽고 편리하지만

그 쉽고 편리한 자동구성을 변경할 때

스프링 부트가 "어떻게" 자동구성을 하는지에 대한 지식이 없다면

오히려 겁내 불편할 수도 있음을ㅋㅋㅋㅋ알게 되었음....(실제로 어려워하는 글들이 많이 보여서 ㅎㅎㅎ)

 

 

 

자 그렇다면 이제 뭐다?

"토비의 스프링 부트의 이해와 원리" 보자..

Auto Configuration 설명 잘되어있는데 출근길에 꾸벅꾸벅 졸면서 듣느라 부분부분밖에 기억이 안남

낼 다시 봐바야지~

728x90