해결된 질문
작성
·
536
·
수정됨
1
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
정확하게 궁금증이 풀리지 않아 다시 질문드립니다.
다시 한번 질문드리자면,
제가 배우고 있는게 정확히 스프링인지 스프링 프레임워크인지 감이 안와요.
말씀에 따르면, 본 강의 내에서 설정한 환경은 스프링 부트환경인거고, 이 안에서 제가 현재 학습하고 있는 모든 내용은 스프링 내용이 맞는거죠?
또한 인텔리제이에서 단순히 ctrl shift f10을 이용해서 코드를 실행하는 것은 단순히 스프링을 사용하고 있는 것이고,
인텔리제이에서 CoreApplication 을 실행하는 것은 스프링 부트를 사용하는 것인가요?
그렇다면 여기서 스프링 부트를 실행한 것은 스프링 부트로 스프링 프레임워크를 실행한 것으로 이해해도 무방할까요?
답변 1
2
안녕하세요. alkooper5님, 공식 서포터즈 OMG입니다.
.
제가 배우고 있는게 정확히 스프링인지 스프링 프레임워크인지 감이 안와요.
스프링프레임워크를 줄여서 스프링이라고 합니다.
말씀에 따르면, 본 강의 내에서 설정한 환경은 스프링 부트환경인거고, 이 안에서 제가 현재 학습하고 있는 모든 내용은 스프링 내용이 맞는거죠?
네 맞습니다. 스프링부트 개발 환경에서 스프링을 배우고 계신게 맞습니다.
또한 인텔리제이에서 단순히 ctrl shift f10을 이용해서 코드를 실행하는 것은 단순히 스프링을 사용하고 있는 것이고,
인텔리제이에서 CoreApplication 을 실행하는 것은 스프링 부트를 사용하는 것인가요?
ctrl shift f10으로 실행시킨게 CoreApplication입니다.
ctrl + shift + f10은 인텔리제이에서 서버를 실행시키는 명령어입니다.
그렇다면 여기서 스프링 부트를 실행한 것은 스프링 부트로 스프링 프레임워크를 실행한 것으로 이해해도 무방할까요?
네, 무방합니다.
비유를 들면 , 메모장으로도 자바 코드를 작성할 수 있습니다. 하지만 보통의 개발자들은 인텔리제이, 이클립스 등의 도구를 이용하여 도구들이 지원하는 편리한 기능들을 이용하여 개발을 합니다.
여기서 메모장으로 자바 개발하는 것이 스프링이라고한다면 이클립스나 인텔리제이를 사용하여 개발하는 것이 스프링부트 환경에서 스프링 개발이라고 보시면 됩니다.
.
감사합니다.
ctrl shift f10에 대한 것입니다.
여기서 실행되는 게 CoreApplication이고 이 때 스프링 부트서버가 실행된다고 하셨는데요
혹시 이전 강의 전반에 걸쳐서 MemberApp이나 OrderApp같은 곳 혹은 테스트 코드에서 우리가 진행한 ctrl shift f10 단축키도 모두 CoreApplication이 진행된다는 말씀이신가요..?
아니면 이 강의에서 처음 등장한 CoreApplication에서 단축키를 실행한 것 때문에 스프링부트 서버가 실행된다는 말씀이신가요?
이 부분에서 혼란이 오는 것은 이해가 됩니다. 저도 비슷한 생각을 했어서요.
ctrl + shift f10은 인텔리제이에서 애플리케이션을 실행하는 명령어입니다.
단순 위에 표시한 세모 실행버튼을 키보드 입력으로 실행시켜주는 역할입니다.
그리고 OrderApp도 마찬가지로 세모 버튼으로 애플리케이션 실행 하는 것을 대신해주는 것 뿐입니다.
그리고 이 OrderApp은 스프링부트 애플리케이션에 직접 영향이 가지 않습니다.
같은 프로젝트 안에서 별도의 실행영역을 갖고 있고, 소스코드를 공유한다고 보시면 됩니다.
아니면 이 강의에서 처음 등장한 CoreApplication에서 단축키를 실행한 것 때문에 스프링부트 서버가 실행된다는 말씀이신가요?
=> 이 내용이 맞습니다.
만약 후자가 맞다면 이 코어 앱을 사용하는 것이 스프링부트를 사용한다는 것이고,
네 맞습니다.
나머지 OrderApp이나 MemberApp 같이 자바코드만을 실행시키는 것은 스프링 부트의 환경이지만, 스프링부트 서버를 실행한 것이 아닌, 스프링 프레임워크를 실행한 것이라고 이해해도 되는건가요?
OrderApp과 MemberApp 및 안에서 작성된 코드를 보시면 아시겠지만 스프링을 사용하지 않은 자바 코드입니다. 질문에도 남기셨듯이요.
그래서 정리하면 스프링부트의 프로젝트 환경에서 생성된 순수한 자바 코드이며, OrderApp과 MemberApp은 CoreApplication과 별도로 실행이 되고 실행 할 수 있는 코드입니다.
스프링과 스프링부트의 차이가 잘 와닿지 않는다면 곧 출시할 영한님의 스프링부트 강의를 참고해주세요.
스프링부트의 편리함을 설명드리기 위해 스프링부트에서 제공하는 기능들 없이 개발, 세팅 하는 방법들을 먼저 설명해주실텐데요. 이 내용을 학습하신다면 이해되시리라 생각합니다.
안녕하세요 OMG님
답변을 보고 하나 더 궁금한 점이 생겼습니다.
답변 중에서 OrderApp과 MemberApp에서 작성된 코드를 보면 스프링을 사용하지 않은 자바코드라고 해주셨습니다.
그런데 MemberApp코드를 보면
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService", MemberService.class)
스프링 프레임워크를 사용하고 있는 것을 볼 수 있는데요.
ApplicationContext 인터페이스나
AnnotationConfigApplicationContext 인스턴스를 사용하는 것을 보면
이것은 스프링프레임워크를 사용하는 것이지 않나요..?
실제로 springframework가 import되는 것 같구요..
이를 통해 스프링을 사용한다고 말할 수 있는 것 아닌가요???
여기에 나온 답변은 제가 이해한 부분과 일치해서 첨부할게요. 자바코드지만 스프링 컨테이너나 스프링 빈을 사용하고 있는 것을 보아하니 맞는 거 같은데..ㅠㅠ
다시 정리해보자면,
MemberApp이나 OrderApp은 스프링부트는 아니지만, 스프링 프레임워크를 사용하고 있는 자바순수코드인 것으로 이해해도 되나요?
-
수 일에 걸쳐 질문을 드리는 동안 매우 지엽적인 문제들을 질문하고 있어서 죄송합니다.
개인적으로 이런 애매한 부분들도 모두 짚고 넘어가려고 하는 성향이 있어서 질문이 매우 지저분해지네요.
그럼에도 불구하고 매번 친절한 답변을 해주셔서 감사드립니다.
잘못된 설명이 포함되어 있어 꼼꼼히 확인 후 답변을 드리려고 시간이 좀 걸렸습니다.
말씀하신대로 MemberApp에서 스프링 컨테이너에
MemberService memberService =
applicationContext.getBean("memberService", MemberService.class);
스프링 컨테이너에서 빈을 조회하기 때문에 스프링 프레임워크를 사용한게 맞습니다.
스프링 컨테이너를 사용하기 위해 , 스프링을 사용하기 위해 프로젝트 세팅을 한 과정을 생각해보면 start.spring.io에서 프로젝트를 생성한 것 밖에 없습니다.(스프링 부트 이전에는 maven 프로젝트로 생성하여 Pom.xml에 다양한 스프링 및 애플리케이션 개발에 필요한 의존성을 추가해야했고 버전 호환성을 많이 고려해야했습니다.)
따라서 MemberApp에서의 코드는 스프링부트 환경에서 스프링프레임워크로 개발한게 맞습니다.
꼼꼼히 파고드시려는 덕분에 제가 실수하였던 부분을 알 수 있었습니다.
지금 조금 모호하더라도 스프링을 더 많이 사용하고 접해보고, 추가로 영한님의 스프링부트 강의도 수강하신다면 이후에는 모호하게 느끼시는 것들을 해소하실 수 있을거라 생각합니다.
딱 한 가지만 더 질문드리겠습니다..ㅎㅎ
ctrl shift f10에 대한 것입니다.
여기서 실행되는 게 CoreApplication이고 이 때 스프링 부트서버가 실행된다고 하셨는데요
혹시 이전 강의 전반에 걸쳐서 MemberApp이나 OrderApp같은 곳 혹은 테스트 코드에서 우리가 진행한 ctrl shift f10 단축키도 모두 CoreApplication이 진행된다는 말씀이신가요..?
아니면 이 강의에서 처음 등장한 CoreApplication에서 단축키를 실행한 것 때문에 스프링부트 서버가 실행된다는 말씀이신가요?
만약 후자가 맞다면 이 코어 앱을 사용하는 것이 스프링부트를 사용한다는 것이고, 나머지 OrderApp이나 MemberApp 같이 자바코드만을 실행시키는 것은 스프링 부트의 환경이지만, 스프링부트 서버를 실행한 것이 아닌, 스프링 프레임워크를 실행한 것이라고 이해해도 되는건가요?
흐름상 전자일 거 같진 않은데.. 후자일 경우 제가 이해한 게 맞나요?
스프링과 스프링부트 사이에서 많은 혼란이 생기네요