[스프링 입문 by 김영한] Q&A

Hazel Park·2021년 2월 15일
29

스프링 입문 강의를 듣는 중인데요.
Q&A 중 도움이 되는 내용을 스크랩했어요.

0. 강의소개

스프링완전정복,스프링부트와JPA (강의) 공부순서?

스프링완전정복,스프링부트와JPA
안녕하세요 어디에 질문해야될지 잘 몰라서요... 스프링이 처음인 학생인데(MVC,Boot 전혀 모릅니다..) 이 강의를 듣고 김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵을 들을려고 했는데 괜찮은 건가요..? 아니면 스프링 완전 정복 로드맵 강의들 출시를 기다려야 하는건가요?

A. 김영한 2020.09.14 AM 11:44

실무에서 어떤식으로 개발하는지를 100%는 아니라도 먼저 한번 느껴봐야 개발 이론을 공부할 때도, 이 기술이 어디에 왜 사용되는지 제대로 그리고 쉽게 이해할 수 있습니다.
제가 가장 추천하는 학습 코스는 바로 다음 야생형 코스입니다.
1. 스프링 입문 - 코드로 배우는 스프링부트, 웹 MVC, DB 접근기술
2. 실전! 스프링부트와 JPA 활용 1(일단 따라하면서 실무 웹 개발 감 잡기)
3. 자바 ORM 표준 JPA 프로그래밍 -기본편(JPA 이론 학습)
4. 실전! 스프링부트와 JPA 활용 1(JPA 이론을 학습한 이후에 활용 1편은 다시 복습)
5. 실전! 스프링부트와 JPA 활용2
6. 실전! 스프링 데이터 JPA
7. 실전! Querydsl
이후 스프링 관련된 이론 내용 학습

스프링부트만 배워도 될까요?

질문이 있습니다! 2020.11.02 PM 19:12
현재 새로 생겨난 기업들은 스프링 부트를 많이 사용하고 예전(?) 기업들은 부트가 아닌 그냥 스프링 프레임워크를 많이 사용하는 것 같은데 부트만 배워도 될까요? 스프링 부트는 뭔가 많이 생략된 버전이라 괜찮을지 걱정입니다!

A. 김영한 2020.11.02 PM 21:43
스프링 부트는 스프링을 편리하게 사용도록 도와주는 기술이고, 스프링의 기능을 모두 사용한다고 이해하시면 됩니다.

같은 질문을 주신 분이 있어서 링크로 남길께요^^
결론부터 말씀드리면 스프링 부트는 스프링을 편리하게 사용도록 도와주는 기술이고, 스프링의 기능을 모두 사용한다고 이해하시면 됩니다.
https://www.inflearn.com/questions/60633
감사합니다.
(링크 깨짐)

Django보다 Spring이 안정적이라서 사용하나요?

Spring 사용이유 020.12.03 PM 20:15
안녕하세요~ 우선 좋은 강의 감사드립니다 :)
항상 궁금했던 사항이 있는데요. 서비스를 위해서 Django같은 프레워크를 채택하는 기업도 있는가 하면 많은 큰 it 회사들은 Spring을 채택을하더라구요. 어떠한 점 때문에 많은 it회사들이 Spring을 채택하는 것인가요?
제가 생각했을 때는 생산성 측면에서는 Django가 훨씬 유리한 것 같은데, 안정성 측면에서 Spring이 훨씬 튼튼해서 그런건가요?

A. 김영한 2020.12.03 PM 22:55
JAVA의 거대한 오픈 소스 생태계
엔터프라이즈 환경에서 많이 검증된 기술들. 특히 대용량 트래픽이나 성능 부분.
국내 숙련된 개발자도 자바 개발자가 많습니다.

안녕하세요. ㅇㅇ님 좋은 질문입니다.
저는 장고를 사용하든 스프링을 사용하든 생산성은 비슷하다고 생각합니다. 프로젝트가 단순할 때는 장고가 유리해보이지만, 실무의 복잡한 프로젝트들을 진행하면, 그 복잡성을 해결할 수 있는 탄탄하고 다양한 기술들이 필요한데, 자바에는 매우 탄탄한 오픈소스들이 있고, 오픈 소스 생태계가 매우 거대합니다. 그리고 주로 엔터프라이즈 환경에서 많이 검증된 기술들이 많습니다. 특히 대용량 트래픽이나 성능 부분에서 자바가 가진 이점도 매우 큽니다. 물론 장고도 좋은 점이 많습니다.
국내에서 스프링을 선택하는 것에는 여러가지 이유가 있지만, 제가 아는 대부분의 큰 프로젝트들은 루비로 시작하든, 장고로 시작하든 결국에는 자바 스프링으로 넘어가는 것을 수도 없이 보았습니다. 앞서 말씀드린 기술적인 부분도 크고, 또 한편으로 국내 백엔드 개발자 풀도 무시할 수 없습니다.
국내 대부분의 큰 IT 기업은 자바와 스프링을 주로 사용하기 때문에, 자바 개발자가 아무래도 많고, 또 숙련된 개발자도 자바 개발자가 많습니다. 반대로 채용시장에서 숙련된 개발자를 많이 뽑기위해 기업들도 자바를 선택하는 면도 있습니다.
도움이 되셨길 바래요^^

공부 로드맵?

안녕하세요. 로드맵 관련해서 질문이 있어 남깁니다. 2020.12.21 PM 14:35
로드맵을 보니까 완전 정복이 있고, 스프링부트 + JPA가 있던데 어떤 것부터 먼저 하는게 더 좋을까요??

김영한 2020.12.21 PM 19:15
지금 시점에 추천하는 코스는 다음과 같습니다.
1. 스프링 입문
2. 스프링 핵심 원리 - 기본편
3. HTTP 기본 지식
4. 스프링 부트와 JPA 실무 완전 정복 로드맵 -> 타입 B 야생형(추천)
스프링 입문과 스프링 핵심 원리를 듣고 나면 스프링으로 개발하는 가장 중요한 기본 지식을 쌓은 상태가 됩니다. 그래서 HTTP 정도까지 들은 후에 바로 활용편에 들어가는 것도 좋은 선택입니다. 스프링을 실무에서 어떤 식으로 활용해서 개발하는지 먼저 배워두고, 이후에 스프링 완전정복 시리즈를 통해 스프링 MVC나 스프링 데이터 접근 기술 같은 부분은 더 깊이있게 학습하시면 됩니다.

1. 프로젝트 환경설정

프로젝트 생성

국내 대형 IT 기업들 spring framework 사용 이유?

국내 대형 IT 기업들이 spring framework를 사용하는 이유를 알고 싶습니다
안녕하세요 김영한님! 자바 백엔드 개발자 지망생입니다.
자바 백엔드 개발자 지망생으로서, 국내의 IT 기업들이 왜 다른 framework들보다는 spring을 이용하는지 궁금합니다.

A. 김영한 2021.02.14 PM 23:20
트래픽과 규모가 되면 성능 + 안정성 모두 잡아야 함

여러가지 요인이 있겠지만, 어느정도 트래픽과 규모가 되는 곳에서는 성능 + 안정성 모두를 잡아야 하는데, 자바+스프링 프레임워크가 이 부분에 매우 탁월합니다. 그래서 다른 언어로 시작해도 어느정도 규모가 되면 자바+스프링으로 많이들 전환합니다.
국내 시장에서 고급 백엔드 엔지니어 인력중에 자바+스프링을 잘하시는 분이 많은 부분도 작용합니다.

지금 Spring을 배우고 있는건지, SpringBoot를 배우는건가요?

저희가 지금 spring을 배우고 있는건지 springBoot를 배우는건지 궁금합니다.
자바 학습하고 바로 spring으로 넘어왔는데 솔직히 명확한 차이를 잘 모르겠어요 ㅠㅠ
spring을 만드는 것을 도와주는게 spring boot인것 같은데
저희는 지금 spring boot를 배우고 있는건가요?

A. 김영한 2020.11.03 PM 22:56
둘다.

둘다 배우고 있는 것입니다.
스프링을 편리하게 사용하도록 도와주는 것이 스프링 부트인데, 스프링 부트는 쉽게 이야기해서 스프링을 편리하게 사용하도록 도와주는 껍데기 입니다.
둘의 자세한 차이는 다음 강의인 스프링 핵심 원리 - 기본편의 섹션1에서 자세히 설명드립니다.

라이브러리 살펴보기

Spring 템플릿 엔진 말고 React 써도 되나요?

안녕하세요 강사님이 템플릿 엔진에 대해서 질문이 있습니다.
성능 문제로 템플릿 엔진보다는 웹 프레임워크 vue.js react.js angular.js를 쓴다고 들었습니다.
여기 강의에서 thymeleaf 템플릿 엔진을 사용했는데, spring에서 템플릿 엔진을 꼭 써야하는지 아니면 간단하게 예제로써만 사용하고 나중에는 react.js vue.js angular.js같은 웹 프레임워크를 사용하는 지 궁금합니다.

A. 김영한 2020.10.04 PM 23:17

웹 애플리케이션 개발은 크게 2가지 렌더링 방식이 있습니다.

    1. 서버 사이드 렌더링
    • 설명: 서버에서 완전한 HTML을 만들어서 내려줍니다. 대표적으로 jsp, thymeleaf, velocity, freemarker가 있습니다.
    • 장점: 단순하고, 학습 곡선이 낮습니다. 백엔드 개발자도 쉽게 개발할 수 있습니다.
    • 단점: 동적이면서 복잡한 화면을 만들기 어렵습니다.
    1. 클라이언트 사이드 렌더링
    • 설명: 서버는 API만 제공하고, 자바스크립트 프레임워크가 템플릿과 서버 API 응답 결과를 조합해서 HTML 화면을 동적으로 만듭니다. 대표적으로 react, vue.js, angularJS 등이 있습니다.
    • 장점: 동적이고, 복잡한 화면을 만들기 좋습니다.
    • 단점: 공부할 분량이 매우 많습니다. 자바스크립트에 능숙해야 합니다. 웹 프론트엔드 개발자라는 전문 분야가 있습니다.

정리
클라이언트 사이드 렌더링은 웹 프론트엔드 개발자라는 전문 분야가 있을 정도로 학습해야 할 내용이 많습니다. 저희 회사를 비롯한 대부분의 회사가 백엔드 서버 개발자와 웹 프론트엔드 개발자를 별도로 채용합니다.
실무에서는 서버 사이드 렌더링도 필요하고 클라이언트 사이드 렌더링도 필요합니다.
단순하고 정적인 화면이라면 서버 사이드 렌더링 기술로 개발을 금방 끝낼 수 있습니다.
제가 추천하는 방법은 먼저 서버 사이드 렌더링 기술을 하나라도 배우고, 그 다음에 여유가 되면 클라이언트 사이드 렌더링 기술은 옵션으로 배우시는 것을 추천드립니다.

그래서 선택지를 드리자면^^
1. 자바스크립트에 자신있고, 완전 풀스택으로 갈것이다. = react + typescript
2. 백엔드 개발이 좋고, 스프링이 좋은데, 어쩔 수 없을 때 화면을 찍겠다. = thymeleaf
3. 레거시 하는 회사에 입사해야 한다. = jsp (ㅠㅠ)
4. velocity는 그냥 그걸 사용하는 회사에 입사하고 고민해도 됩니다. ㅎㅎ (쉬워서요 ㅎㅎ)

스프링부트를 사용하기 전에 스프링 경험해야 해요?

간단한 질문 있습니다.
스프링부트를 사용하기 전에 스프링을 경험하고 사용하라는 말을 많이 들었습니다.
스프링부트부터 배우면 이해를 제대로 하지 못하고 넘어가서 그렇다는데 강사님 생각은 어떠신가요?

A. No. Spring Boot로 시작한 후, Spring 깊이 있게 이해

김영한 2020.09.28 AM 00:09
스프링 부트는 단지 스프링 기술을 편리하게 사용하도록 도와주는 기술입니다. 따라서 스프링 부트를 사용한다고 해서 스프링을 사용하지 않는 것이 아닙니다.

5년 전이라면 순수한 스프링을 잘 사용하고 그 위에 부트를 사용하는 방법을 배우세요. 라고 하는게 어느정도 맞지만, 지금은 모두가 스프링 부트로 시작하고 있고, 심지어 스프링 예제도 모두 스프링 부트로 시작합니다.
이런 시점에 순수한 스프링 만으로 개발을 먼저 경험하세요 라고 하면, 저는 오히려 학습 속도가 더 늦어질 수 있다 생각합니다.

그래서 개발 환경을 설정하는 방법이나 스프링을 편리하고 빠르게 배우기 위해서 스프링 부트로 시작하시는게 좋습니다. 다만 스프링 부트는 스프링을 잘 사용하도록 도와주는 기술이라는 점을 기억하시고, 스프링 자체를 깊이있게 이해하는 것이 매우 중요합니다.
그래서 커리큘럼도 스프링 입문에서는 스프링 부트를 적극 활용해서 스프링 개발 전반을 빠르게 학습하고, 이후에 스프링 핵심 원리로 스프링 자체에 대해서 깊이있게 설명드립니다.

log4j 는 과거 유물급인가요?

저는 지난날 스프링 로깅을 log4j 로 배웠는데 과거 유물급을 배운건가요?
이클립스 + spring MVC lagacy + MyBatis + Oracle
조합으로 프로젝트를 진행했었는데
Log4j 또는 Log4j2 는 과거 유물이 된건가요?
로깅에 어떤 lib을 써야 현업에 맞추어 공부할지에 대해 약간 혼란스러워 여쭈어 봅니다.
logback 과 slf4j 가 Log4j를 쓰기위해 꼭있어야 되는걸로 알고있긴한데...
딱 거기까지만 알구요..
로깅을 위한 최고의 라이브러리를 추천해주시면 안될까요?

A. 김영한 2020.07.21 AM 00:31
Yes. slf4j + logback 조합 권장

사실 이런저런 고민이 될 때는 스프링부트가 기본으로 제공해주는 방식을 선택하는 것이 좋습니다. (그만큼 전세계 많은 개발자들이 사용하는 방식을 기본으로 제공하는 것이니까요.)
우선 Log4j는 과거의 유물이 된 것이 맞습니다. Log4j2는 사용하는 분들이 있지만, logback보다 인기가 많이 떨어집니다.
그래서 스프링부트가 기본으로 제공하는 slf4j + logback 방식을 사용하시는 것을 권장합니다^^! 저도 그렇고, 제 주변의 실무 프로젝트 하시는 분들도 대부분은 딱 이 조합을 사용합니다.

View 환경설정

빌드하고 실행하기

2. 스프링 웹 개발 기초

정적 컨텐츠

MVC와 템플릿 엔진

API

3. 회원 관리 예제 - 백엔드 개발

비즈니스 요구사항 정리

회원 도메인과 리포지토리 만들기

회원 리포지토리 테스트 케이스 작성

회원 서비스 개발

회원 서비스 테스트

4. 스프링 빈과 의존관계

컴포넌트 스캔과 자동 의존관계 설정

자바 코드로 직접 스프링 빈 등록하기

5. 회원 관리 예제 - 웹 MVC 개발

회원 웹 기능 - 홈 화면 추가

회원 웹 기능 - 등록

회원 웹 기능 - 조회

6. 스프링 DB 접근 기술

H2 데이터베이스 설치

순수 JDBC

스프링 통합 테스트

스프링 JdbcTemplate

JPA

스프링 데이터 JPA

7. AOP

AOP가 필요한 상황

AOP 적용

8. 다음으로

다음으로

profile
금융에 진심인 개발자

2개의 댓글

comment-user-thumbnail
2021년 2월 16일

좋은 내용 감사합니다^^

답글 달기
comment-user-thumbnail
2022년 7월 20일

신기하네요
김영한님에게 허락을 받으셨네요 ㄷㄷ

답글 달기