Top 30 스프링 부트 공부 Trust The Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 스프링 부트 공부 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.prairiehousefreeman.com team, along with other related topics such as: 스프링 부트 공부 스프링부트 공부 순서, 스프링 공부 순서, 스프링부트 책 추천, 스프링 공부 방법, 스프링 스프링부트 차이, 스프링 독학, 스프링 공부 기간, 스프링 공부 사이트


자바 공부 어떻게 해야하나요? 책, 강의, 스터디 방식! 추천 드립니다.
자바 공부 어떻게 해야하나요? 책, 강의, 스터디 방식! 추천 드립니다.


스프링부트(Spring Boot)를 배우기 위해, 스프링(Spring)을 먼저 배워야 할까?

  • Article author: gocoder.tistory.com
  • Reviews from users: 5525 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 스프링부트(Spring Boot)를 배우기 위해, 스프링(Spring)을 먼저 배워야 할까? 자바의 학습 로드맵 … 2. 제가 생각하는 자바를 공부하는 순서입니다. 주목할 점은 서블릿 다음에 바로 스프링 부트를 공부해도 좋고, 혹은 스프링을 공부 … …
  • Most searched keywords: Whether you are looking for 스프링부트(Spring Boot)를 배우기 위해, 스프링(Spring)을 먼저 배워야 할까? 자바의 학습 로드맵 … 2. 제가 생각하는 자바를 공부하는 순서입니다. 주목할 점은 서블릿 다음에 바로 스프링 부트를 공부해도 좋고, 혹은 스프링을 공부 … Spring Boot를 위해 , Spring 먼저 알아야 하나? 안녕하세요. 고코더 입니다. ● 1. 스프링 부트를 학습하는 분이 많습니다. 요즘은 실무에서도 스프링보다 스프링 부트 프로젝트가 많아진 걸 느낍니다. 그래서..
  • Table of Contents:

태그

관련글

댓글0

고코더 출간 소식!

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

티스토리툴바

스프링부트(Spring Boot)를 배우기 위해, 스프링(Spring)을 먼저 배워야 할까?
스프링부트(Spring Boot)를 배우기 위해, 스프링(Spring)을 먼저 배워야 할까?

Read More

스프링부트 백엔드 프로그래밍 (7)

  • Article author: brunch.co.kr
  • Reviews from users: 2290 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 스프링부트 백엔드 프로그래밍 (7) 지난주에는 자바 예외 처리 및 테스트 코드에 대해서 공부하였고, 캐싱 구현 과제가 있었습니다. 이번 주에는 AOP 에 대해서 공부한 후, 스프링 캐시 … …
  • Most searched keywords: Whether you are looking for 스프링부트 백엔드 프로그래밍 (7) 지난주에는 자바 예외 처리 및 테스트 코드에 대해서 공부하였고, 캐싱 구현 과제가 있었습니다. 이번 주에는 AOP 에 대해서 공부한 후, 스프링 캐시 … 7. AOP | “스프링부트 백엔드 프로그래밍”이라는 주제로 약 8주간 글을 작성할 예정입니다. 4주차를 진행 중이며 w전체 일정의 반은 소화하였네요. 제 스터디가 잘못된 방향으로 가지 않도록, 의견 및 조언을 아낌없이 해주시길 부탁드립니다. 지난주에는 자바 예외 처리 및 테스트 코드에 대해서 공부하였고, 캐싱 구현 과제가 있었습니다. 이번 주에는 AOP 에 대해서 공부
  • Table of Contents:

71 AOP 란

72 AOP 그림으로 이해하기

73 AOP 코드로 이해하기

74 AOP 실제 구현해보기

75 샘플 코드에서 설명하고 싶었던 개념

76 마무리

스프링부트 백엔드 프로그래밍 (7)
스프링부트 백엔드 프로그래밍 (7)

Read More

스프링 공부방법

  • Article author: hellozo0.tistory.com
  • Reviews from users: 37109 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 스프링 공부방법 책. [스프링부트와 AWS로 혼자 구현하는 웹 서비스]로 예제 코드들을 따라치며 공부 … …
  • Most searched keywords: Whether you are looking for 스프링 공부방법 책. [스프링부트와 AWS로 혼자 구현하는 웹 서비스]로 예제 코드들을 따라치며 공부 … 안녕하세요 안녕주입니다..! 방학이 되어 진짜 스프링 공부를 제대로 시작해보려고 합니다.! 과거에 썼던 글이 지금도 알아보기 힘들어서 어떤 강의 & 어떤 책으로 공부 했고 하고싶은지 등등을 다시 정리 하겠습..
  • Table of Contents:

관련글

댓글0

전체 방문자

티스토리툴바

스프링 공부방법
스프링 공부방법

Read More

시리즈 | [Spring Boot] 스프링 부트 기초(백기선 님의 스프링 부트 개념과 활용 강좌 공부) – air.log

  • Article author: velog.io
  • Reviews from users: 5642 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 시리즈 | [Spring Boot] 스프링 부트 기초(백기선 님의 스프링 부트 개념과 활용 강좌 공부) – air.log 스프링 부트 프로젝트 생성 intellij를 실행하여 create new project를 누른다 스크린샷 2020-02-02 오전 … 정적 페이지로 생성하는 방법 저번에 공부한. …
  • Most searched keywords: Whether you are looking for 시리즈 | [Spring Boot] 스프링 부트 기초(백기선 님의 스프링 부트 개념과 활용 강좌 공부) – air.log 스프링 부트 프로젝트 생성 intellij를 실행하여 create new project를 누른다 스크린샷 2020-02-02 오전 … 정적 페이지로 생성하는 방법 저번에 공부한. 개발자들을 위한 블로그 서비스. 어디서 글 쓸지 고민하지 말고 벨로그에서 시작하세요.
  • Table of Contents:

1[Spring Boot] 스프링 부트란

2[Spring Boot] 스프링 부트 시작하기

3[Spring Boot] 스프링 부트 프로젝트 구조

4[Spring Boot] 의존성 관리

5[Spring Boot] 자동 설정 @EnableAutoConfiguration

6[Spring Boot] 내장 웹 서버 – 2 (스프링부트 HTTPS HTTP2)

7[Spring Boot] JAR파일(독립적으로 실행가능)

8[Spring Boot] SpringApplication이 제공하는 기능들

9[Spring Boot] 외부설정1 – Applicationproperties

10[Spring Boot] 외부설정2 – @ConfigurationProperties

11[Spring Boot] 프로파일

12[Spring Boot] 로깅

13[Spring Boot] 테스트

14[Spring Boot] Devtools

15[Spring Boot] 스프링 웹 MVC – HttpMessageConverters

16[Spring Boot] ViewResolver

17[Spring Boot] 정적 리소스 지원

18[Spring Boot] 웹 JAR

19[Spring Boot] index 페이지 & 파비콘

20[Spring Boot] 템플릿 엔진 – Thymeleaf

21[Spring Boot] HtmlUnit

22[Spring Boot] ExceptionHandler

23[Spring Boot] HATEOAS

24[Spring Boot] CORS

25[Spring Boot] 인메모리 데이터베이스

26[Spring Boot] DBCP & MySQL

27[Spring Boot] PostgreSQL

28[Spring Boot] spring data JPA

29[Spring Boot] 데이터베이스 초기 세팅

30[Spring Boot] 데이터베이스 마이그레이션 툴

31[Spring Boot] Redis

32[Spring Boot] MongoDB

33[Spring Boot] Neo4j

34[Spring Boot] 스프링 시큐리티

35[Spring Boot] 스프링 시큐리티 커스터마이징

36[Spring Boot] 스프링 REST 클라이언트

37[Spring Boot] 스프링 REST 클라이언트 커스터마이징

38[Spring Boot] 스프링 부트 운영

시리즈 | [Spring Boot] 스프링 부트 기초(백기선 님의 스프링 부트 개념과 활용 강좌 공부) - air.log
시리즈 | [Spring Boot] 스프링 부트 기초(백기선 님의 스프링 부트 개념과 활용 강좌 공부) – air.log

Read More

[JAVA] Spring boot 공부방향

  • Article author: skmouse.tistory.com
  • Reviews from users: 7991 ⭐ Ratings
  • Top rated: 3.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [JAVA] Spring boot 공부방향 [JAVA] Spring boot 공부방향 ; 1. 완전초보일때 참고할 깃허브 ; 2. 완전 처음일때 강의추천(김영한님 로드맵따라가기) ; 3 나중에 고오급 개발자되면.. < ... ...
  • Most searched keywords: Whether you are looking for [JAVA] Spring boot 공부방향 [JAVA] Spring boot 공부방향 ; 1. 완전초보일때 참고할 깃허브 ; 2. 완전 처음일때 강의추천(김영한님 로드맵따라가기) ; 3 나중에 고오급 개발자되면.. < ... 1. 완전초보일때 참고할 깃허브 https://github.com/next-step/spring-learning-test next-step/spring-learning-test Contribute to next-step/spring-learning-test development by creating an account on Git..웹/앱/보안 관련 관심이 있는 개발자입니다.
  • Table of Contents:
[JAVA] Spring boot 공부방향

티스토리툴바

[JAVA] Spring boot 공부방향
[JAVA] Spring boot 공부방향

Read More

Spring boot 시작하기 :: Ellune’s Spadework

  • Article author: ellune.tistory.com
  • Reviews from users: 17619 ⭐ Ratings
  • Top rated: 4.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Spring boot 시작하기 :: Ellune’s Spadework 만일 자바를 모르는 사람이라면 일단 자바를 공부를 하고 기본적인 컴퓨터공학 지식을 공부 하길 바란다. ( 신입이나 타언어 개발자라면 이런부분은 기본 … …
  • Most searched keywords: Whether you are looking for Spring boot 시작하기 :: Ellune’s Spadework 만일 자바를 모르는 사람이라면 일단 자바를 공부를 하고 기본적인 컴퓨터공학 지식을 공부 하길 바란다. ( 신입이나 타언어 개발자라면 이런부분은 기본 … 국내에선 자바개발자 = 스프링개발자 라고 할정도로 공식화 되있다. 나도 자바개발자 이며 스프링 개발자 이고 저말에 딱히 부인 하지 않는다.  회사를 다니면서 신입들을 만날때도 있고 가끔 강의를 나가면 자바..허접한 개발자의 건망증 해결 블로그!
  • Table of Contents:

인기포스트 MORE POST

관련글 관련글 더보기

인기포스트

Spring boot 시작하기 :: Ellune's  Spadework
Spring boot 시작하기 :: Ellune’s Spadework

Read More

Spring Boot로 웹개발을 하려고 하는데 어떻게 준비하면 될까요? | 잡코리아 취업톡톡

  • Article author: www.jobkorea.co.kr
  • Reviews from users: 17545 ⭐ Ratings
  • Top rated: 3.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Spring Boot로 웹개발을 하려고 하는데 어떻게 준비하면 될까요? | 잡코리아 취업톡톡 Spring Boot 책 2권 및 FrameWork 책 1권으로 독학을 해보려고 했는데 대학에서만 배운 자바지식으로는 약간 힘이들더라구요 ..ㅠㅜ. 1. Spring Boot를 공부하기위해서 … …
  • Most searched keywords: Whether you are looking for Spring Boot로 웹개발을 하려고 하는데 어떻게 준비하면 될까요? | 잡코리아 취업톡톡 Spring Boot 책 2권 및 FrameWork 책 1권으로 독학을 해보려고 했는데 대학에서만 배운 자바지식으로는 약간 힘이들더라구요 ..ㅠㅜ. 1. Spring Boot를 공부하기위해서 … 웹프로그래머 | 컴퓨터공학 4학년 졸업예정자이며 학점을 다채워서 이번 학기에 취준을 하려고 합니다.주력 언어는 JAVA이며 총 학점평…jobkorea, 구인, 구직, 취업, 등록, 신문기사, 고용, 대기업, 채용, 기업, 검색, 컴퓨터, 정보통신, 웹마스터, 네트웍, 서버관리, 웹 디자인, 웹 마케팅, 컨텐트개발, 정보검색/사서직, 인터넷영업, 서버구축, 데이터베이스, 디자인, 편집디자인, MAC 편집, 제품 디자인, 산업 디자인, CAD, CAM, 웹 디자인, 캐릭터, 애니메이션, 프로그래머, 정보제공(IP/CP), 기술 영업, 통신 기술, 시스템 분석/설계, 정보통신강사, 하드웨어, 사무직, 관리직, 경리, 회계, 재무, 마케팅, 영업, 무역, 해외영업, 사무직, 기획, 총무, 인사, 홍보, 비서직, 프리랜서/아르바이트, 장애인, 외국인업체, 자원봉사, 노무직,잡코리아, JOKOREA, 헤드헌팅, 파견·대행, 아웃소싱, 인재파견, 채용대행, 위탁도급, 파견임시, 교육, 교육과정, 교육정보, 교육기관, 취업박람회, 채용박람회
  • Table of Contents:

검색

직무 지역 찾기

전체서비스

주요서비스

MY 홈

기업서비스

취업톡톡 세부메뉴

질문 상세 보기

잡코리아 기타 정보

Spring Boot로 웹개발을 하려고 하는데 어떻게 준비하면 될까요? | 잡코리아 취업톡톡
Spring Boot로 웹개발을 하려고 하는데 어떻게 준비하면 될까요? | 잡코리아 취업톡톡

Read More


See more articles in the same category here: 79+ tips for you.

스프링부트(Spring Boot)를 배우기 위해, 스프링(Spring)을 먼저 배워야 할까?

Spring Boot를 위해 , Spring 먼저 알아야 하나?

안녕하세요.

고코더 입니다.

● 1. 스프링 부트를 학습하는 분이 많습니다. 요즘은 실무에서도 스프링보다 스프링 부트 프로젝트가 많아진 걸 느낍니다. 그래서 많은 학습자들이 질문하는 것 중 하나가 바로 “스프링 먼저 학습해야 하나요?”라는 질문입니다. 이 부분에 대한 답을 진행하려고 합니다.

자바의 학습 로드맵

● 2. 제가 생각하는 자바를 공부하는 순서입니다. 주목할 점은 서블릿 다음에 바로 스프링 부트를 공부해도 좋고, 혹은 스프링을 공부하고 다음 스프링부트를 공부하는 것도 괜찮다는 이미지입니다. 미리 제 생각의 결론을 말하면 “스프링 부트 먼저 공부해도 좋다”입니다. 기존의 스프링은 복잡하고 불필요한 설정부터 시작하게 되는 버거움을 제거한 게 스프링 부트입니다. 물론 학습은 무겁게 시작해서 점점 가볍게 가는 것이 좋을 수도 있습니다. 즉 스프링을 공부하고 부트를 공부한다면 효과적이지만, 스프링 부트를 먼저 배우면 좀 더 편리하고 빠르게 배울 수 있다는 있는 장점이 있습니다.

방대한 설정의 늪 스프링

● 3. 스프링은 본래 EJB의 복잡함에 벗어나, POJO 기반의 경량화된 프레임워크였습니다. 하지만 시간이 지나면서 스프링은 점점 많은 곳에서 사용하게 되었고, 필요한 기능들이 늘어나면서 사용할 라이브러리가 극도로 많아졌습니다. 그에 따라 신경 써야 할 사항들은 점점 많아지고, 방대한 설정은 개발자를 지치게 했습니다. (물론 설정도 하나의 학습입니다)

스프링 부트 시작의 편리함

● 4. 스프링 부트는 톰캣, 그리고 제티와 같은 웹서버를 내장하고 있습니다. 복잡한 환경설정을 간소화합니다. 즉 스프링 부트 프로젝트를 생성할 때 일명 스타터를 제공합니다. 필요한 라이브러리를 묶인 패키지들을 의존성만 추가하면 자동으로 부트가 필요한 파일들을 다운로드됩니다. 이렇게 되면 라이브러리의 버전이 상이해서 생기는 오류들을 피할 수 있게 됩니다.

● 5. 그리고 스프링 부트는 기존의 XML로 설정하던 부분들을 어노테이션(annotation)으로 처리합니다. 덕분에 복잡한 XML의 설정을 기록하면서 생기는 오류들을 피할 수 있게 됩니다. 그리고 메이븐(Maven)과 그레이들(Gradle)을 사용하여 자동화된 빌드 도구들을 사용할 수 있게 됩니다. 즉 지겹게 수정하던 Pom.xml을 만들 필요가 없어집니다.

스프링 부트 시작해도 될 거 같습니다.

● 6. 제가 하는 말은 정답은 아닙니다. 복잡한 설정 또한 좋은 학습입니다. 하지만 자동화된 최신의 도구로 본연의 코딩에 빨리 집중할 수 있게 한 것이 스프링 부트라고 생각이 듭니다. 배울게 많은 프로그래머 입장에서는 이러한 속도 또한 중요하다고 생각합니다.

결론은 이렇습니다.

스프링일 먼저 할까? 부트를 먼저 할까라고 고민한다면

스프링 부트 먼저 시작하셔도 좋을 거 같습니다.

스프링부트 백엔드 프로그래밍 (7)

“스프링부트 백엔드 프로그래밍”이라는 주제로 약 8주간 글을 작성할 예정입니다. 4주차를 진행 중이며 w전체 일정의 반은 소화하였네요. 제 스터디가 잘못된 방향으로 가지 않도록, 의견 및 조언을 아낌없이 해주시길 부탁드립니다.

지난주에는 자바 예외 처리 및 테스트 코드에 대해서 공부하였고, 캐싱 구현 과제가 있었습니다. 이번 주에는 AOP 에 대해서 공부한 후, 스프링 캐시 추상화에 대해서 공부합니다.

어떻게 설명하면 주니어 개발자들이 쉽게 이해할 수 있을지 많은 고민을 했습니다만, 누군가에게 지식을 전달하는 것은 너무 어려운 일입니다. 처음 시작은 가벼운 마음으로 시작하였습니다만, 글을 쓰고 다시 읽어보니… 너무 이해하기 어려운 내용인 것 같습니다.

튜터링 방법에 대해서 좀 더 고민이 필요할 것 같네요…ㅠㅠ

1주 차 – 스프링부트란 무엇인가?, 간단한 API 서버 만들어보기

1. 스프링부트란 무엇인가?

2. 간단한 API 서버 만들어보기 (커리큘럼 소개)

2주 차 – 스프링 프레임워크 기본 개념 이해하기

3. 스프링 프레임워크 IoC, DI(의존성주입)

4. 스프링부트 AutoConfiguration

3주 차 – Rest API, 테스트 코드 작성하기, 예외 처리하기

5. [이전글] 예외 처리 및 테스트 코드 작성하기

[미정, 나중에 시간되면 작성] 6. Rest API (HTTP 기본 개념)

4주 차 – AOP, 스프링부트 캐시 추상화, Redis 연동하기

7. [지금글] AOP

8. [다음글] 스프링 캐시 추상화, Redis 연동하기

[미정]5주 차 – EventListener, MQ, Pub/Sub

10. EventListener, MQ, Pub/Sub 기본 개념

11. RabbiMQ, KAFKA 사용해보기

6주차 – 보안(인증)

[미정] 7주 차 – 병렬, 비동기 프로그래밍

[미정] 8주차 – Spring Cloud

[미정] JPA, Spring Data, Spring Session 등

7. AOP

7장에서는, AOP에 대해서 상세하게 설명을 할 예정이었습니다만… 제가 AOP를 제대로 설명할 자신이 없네요.

7.1 AOP 란?

스프링 레퍼런스에서 참고하였습니다.

Aspect-oriented Programming (AOP) complements Object-oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. Aspects enable the modularization of concerns (such as transaction management) that cut across multiple types and objects. (Such concerns are often termed “crosscutting” concerns in AOP literature.)

자세한 설명은 생략합니다. 링크를 참고하세요.

https://jojoldu.tistory.com/71

https://www.baeldung.com/spring-aop

https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop

7.2 AOP, 그림으로 이해하기

시간 관계상 생략…

7.3 AOP, 코드로 이해하기

스터디에서 과제를 수행하면서, 오픈 API를 연동한 검색 서비스를 구현하고 있습니다. 검색 요청 시 외부 API 서버를 호출해야 하기 때문에, 전체 응답이 빠르지는 않습니다. 그래서, 우리는 비즈니스 로직의 수행 시간을 로그에 남기고 싶습니다. 아래와 같이 3초의 지연시간이 발생하는 메서드가 있다고 가정해봅니다.

메서드 내부의 수행 시간을 확인하기 위해서는, 아래 샘플 코드처럼 비즈니스 로직이 수행하기 직전, 직후 의 시간 차이를 계산해서 수행 시간을 로그에 남길 수 있습니다.

하지만, 이 방법에는 치명적인 단점이 있습니다. 수행 시간 확인을 하고 싶은 메서드가 있다면, 해당 모든 메서드에 시간을 계산하는 로직이 추가되어야 합니다.

모든 메서드에 수행 시간 계산하는 코드를 추가해야 한다…???…

좋은 방법이 아닌 것 같습니다.

스프링 AOP를 구현해보겠습니다. 먼저 의존성을 추가합니다.

@PerformanceTimeRecord라는 어노테이션을 정의해줍니다.

메서드 상단에 어노테이션을 선언해줍니다.

가장 중요한 코딩은, 실제로 수행 시간을 로그에 남길 수 있도록 AOP 구문을 작성해야 합니다. 가장 중요한 구문은 바로 joinPoint.proceed()입니다. 실제 메서드의 내부 로직을 수행합니다. 그리고, proceed() 결과를 반드시 반환해줘야 합니다. return proceed;

메서드를 실행하면, 아래와 같이 로그가 기록됩니다.

이 글에서는, AOP에 대해서 아주 극히 일부에 대해서만 설명하였습니다. 각자 공부하시길 바랄게요.

https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-introduction-defn

7.4 AOP, 실제 구현해보기

샘플 코드는 아래 링크를 확인해주세요. 이번 샘플 코드는 자세히 안 보셔도 됩니다.

https://github.com/sieunkr/spring-study-group/tree/master/4-0

지난주 과제는 영화 검색 서비스에 캐싱 기능을 구현하는 조금 어려운 과제였습니다. 해당 과제에 대해서 대부분의 주니어 개발자들이 영화 검색 메서드 내부에 캐싱 기능을 적용하였습니다.

또는, 응용 서비스 결과를 캐싱 처리하고 싶다면, 서비스를 호출하는 컨트롤러 레이어에서 아래와 같이 구현하면 될 것입니다.

Controller, Service 등 각자 코딩 스타일에 따라서 선택해서 캐싱 로직을 잘 구현하였습니다. 하지만, 영화 외에 쇼핑, 블로그, 뉴스 등 모든 기능에 캐싱 기능을 적용하고 싶다면 어떻게 하면 될까요? 모든 검색 서비스에 캐싱 기능을 전부 적용해줘야 할까요?

AOP 개념을 적용해서, 캐싱 기능을 구현해보겠습니다. 지금부터의 코드는… 이해가 되지 않는다면, 따라 하지 않으셔도 됩니다. 사실, 스프링에서는 이미 캐시 추상화를 제공하고 있고, 다음 시간에 자세히 설명할 예정입니다. 해당 코드는 AOP, 캐싱을 주니어 개발자에게 이해시키기 위해서 임시로 작성한 코드입니다. 자세한 코드가 궁금하시다면 제 github을 확인하시면 됩니다만, 굳이 안 봐도 됩니다. 스프링의 캐시 추상화를 사용하시면 됩니다.

7.4.1 캐시 데이터를 저장하는 자료구조 정의

CurrentMapCustomCache라는 캐시 저장소 역할을 하는 클래스를 정의합니다. 실제 캐시 저장소인 store 필드는 ConcurrentMap의 구현체인 ConcurrentHashMap을 사용합니다.

1. 캐시 데이터를 저장하는 자료구조는 ConcurrentMap의 구현체입니다. 필자의 샘플 코드에서는 ConcurrentHashMap을 사용하였습니다. key 에는 캐시의 키가 저장되며, value 에는 캐시 데이터가 저장됩니다.

2. 캐시 데이터를 Key(키)를 사용해서 찾습니다. 없으면 Optional.empty를 반한 합니다.

3. 신규 캐시 데이터를 저장합니다.

캐시 데이터는 아래와 같이 저장됩니다.

예)

key : 반지의 제왕, value: 에는 ArrayList 데이터가 저장되어있습니다.

위와 같은 캐시 데이터를 용도에 따라서 여러 개의 캐시를 생성 및 관리할 수 있어야 합니다. 전체 캐시 데이터를 관리하는 역할의 CacheManager를 정의합니다.

필자의 샘플 코드에서의, CacheManager는 캐시를 찾아서 반환해주는 역할 정도만 수행합니다. (예를 들어서, 영화 검색에 대한 캐시를 찾아서 반환해줍니다.) 자세한 구현 소스는 생략합니다.

CacheManager에서는 전체 캐시 데이터를 cacheMap 필드에 저장해서 관리합니다. 아래와 같이 모든 캐시 데이터를 저장하고 있습니다.

7.4.2 AOP 캐시 추상화 직접 구현해보기

스프링에서는 @Cacheable이라는 캐시 추상화를 이미 제공합니다. 이 글은, 스터디를 위한 샘플 코드이며, 실무에서 필자의 샘플 코드처럼 사용하지 않습니다.

어노테이션을 선언해줍니다.

캐싱 기능을 적용할 메서드에 어노테이션을 선언해줍니다.

– 영화 검색 시 캐싱 기능이 합니다.

– 추천 영화 데이터 제공 시에도 캐싱 기능을 적용합니다.

– 영화 검색 이외에 어떤 기능에도 편하게 어노테이션만 선언해주면 됩니다.

@LookAsideCaching 어노테이션이 붙은 메서드에는, 캐싱 기능이 동작할 것입니다. key에 해당하는 캐시 데이터가 이미 존재한다면, 메서드 내부 로직을 수행하지 않습니다. 왜냐면, 캐시 데이터가 이미 존재하고 있어서, 해당 데이터를 그대로 사용하면 되기 때문입니다. 캐시 데이터가 있는데 굳이 비즈니스 로직을 수행할 필요가 없습니다. 반면에, 캐시 데이터가 없는 경우에는, 캐시 데이터가 없기 때문에 당연히 메서드 내부 로직이 수행되어야 합니다. 즉, 신규 데이터를 생성해서 사용한 후, 나중에 또 사용할 수 있도록 캐시 데이터를 저장해놔야 합니다.

AOP 코드를 작성해보겠습니다.

CachingAspectProvider이라는 클래스에 구현합니다.

코드는, 중요하지 않습니다. 개념만 이해하세요.

1) 캐시 데이터가 있다면, 존재하는 캐시 데이터를 반환합니다. 즉, @LookAsideCaching 어노테이션이 선언된 메서드 내부를 수행하지 않습니다.

2) 캐시 데이터가 없다면, joinPoint.proceed()를 실행해서, 메서드 내부를 실행합니다. Repository를 사용해서 오픈 API 데이터를 조회합니다. 그리고, 조회한 데이터를 putInCache() 메서드를 호출해서 캐시 저장소에 저장합니다.

코드와 글로 설명하기에는 너무 지루한 내용이네요. 그림으로 설명해보겠습니다.

캐시 데이터가 존재한다면, joinPoint.proceed()가 실행하지 않습니다. 즉, search 메서드의 내부가 실행이 되지 않습니다.

반면에, 캐시 데이터가 존재하지 않는다면 어떻게 될까요? 아래 그림과 같이, 메서드 내부 비즈니스 로직이 실행됩니다.

휴… 자세한 내용은, 스터디 시간에 말로 설명하겠습니다……

7.5 샘플 코드에서 설명하고 싶었던 개념

7.5.1 AOP

관점지향 프로그래밍이라고 부르는 AOP는, 기존의 객체지향 프로그래밍을 보완하기 위해서 사용합니다. 우리가 스터디 중에 진행하는 과제의 핵심 기능은 무엇인가요? 바로 오픈 API를 연동해서 검색 데이터를 제공하는 서비스입니다. 하지만, 캐싱, 로그, 보안, 트랜잭션 같은 기능은 핵심 기능인 검색 서비스와는 개별적인 횡단 관심의 내용들입니다. 이런, 횡단 관심의 기능들은 AOP 개념을 사용해서 적용하면, 중복되는 코드를 효율적으로 관리할 수 있고, 생산성을 높일 수 있습니다.

역시, 자세한 설명은… 스터디 시간에 하기로…

7.5.2 Cache Pattern

캐싱 전략은 딱히 정답이 없다고 생각합니다. 회사마다 다르고, 상황에 따라서 적절하게 구축해야 합니다. 이것이 항상 정답이다!라는 것은 없습니다. 첫 번째 전략으로는 Inline Cache pattern이라는 전략이 있습니다. 데이터를 캐시 스토리지에 미리 저장하고 필요할 때마다 조회해서 사용하는 방식입니다.

위와 같이 모든 데이터를 캐시에 저장하는 것이 비효율적인 상황이라면, 대안으로는 Cache Aside Pattern을 고려해보는 것도 좋습니다.

처음 사용자가 요청했을 때는 캐시 스토리지에는 아무 데이터도 없는 상황입니다.

1. 애플리케이션은 먼저 캐시 저장소에 데이터가 있는지 조회한다. 하지만 데이터가 없다.

2. 애플리케이션은 Contents DB에서 데이터를 조회하고 사용자에게 제공한다.

3. 애플리케이션은 Contents DB에서 가져왔던 데이터를 캐시 저장소에 저장한다.

다음 사용자가 요청했을 때는 이미 캐시 저장소에 데이터가 있는 상황입니다.

1. 애플리케이션은 먼저 캐시 저장소에 데이터가 있는지 조회한다. 캐시 저장소에 저장되어있는 데이터를 제공한다.

이 글의 샘플 코드는, Cache Aside Pattern에 해당합니다. Aside Pattern에 대해서는, 아래 링크를 참고하길 바랍니다.

https://docs.microsoft.com/ko-kr/azure/architecture/patterns/cache-aside

7.5.3 PSA (Portable Service Abstraction)

샘플 코드에서는 CustomCacheManager라는 인터페이스를 정의하였고, 해당 구현체인 memoryCustomCacheManager를 사용해서, 메모리 기반의 캐싱을 구현하였습니다.

만약에, 저장소를 메모리가 아니라… Redis에 저장하도록 변경하고 싶다면 어떻게 하면 될까요? CustomCacheManager의 구현체인 RedisCustomCacheManager를 정의해줍니다.

그리고, CustomCacheManager를 의존하는 곳에서, 사용하고 싶은 구현체만 변경해주면 됩니다.

하아… 글로 설명하기 어려우니, 그림으로 설명하겠습니다.

AspectProvider에서는 CustomCacheManager 인터페이스를 주입받습니다. 인터페이스로 정의하였기 대문에, 실제 구현체에 대한 주입의 변경은 매우 심플하게 구현할 수 있습니다. 이 경우에, 메모리 캐싱에서 레디스 캐싱으로 변경하는 경우, AspectProvider 에는 크게 영향을 받지 않습니다.

또한, 영화 검색 서비스에 @LookAsideCaching이라는 어노테이션을 선언함으로써 캐싱이 동작하도록 구현하였는데요. 응용 서비스 입장에서는, 캐싱이 실제로 어떻게 동작하는지 전혀 관여하지 않습니다. 어떤 구현체를 사용했는지, 레디스를 사용했는지, 메모리를 사용했는지.. 전혀 알지 못합니다.

지난주 과제를 보니, 대부분의 주니어 개발자분들께서는, 영화 서비스에 대해서만 캐싱 로직을 구현하였고, ConcurrentMap에 의존하게 과제를 작성하셨습니다. 만약에, ConcurrentMap 기반의 캐싱을, 레디스를 연동하는 방식으로 변경하게 되는 경우에, 영화 검색 서비스 소스 코드에 얼마나 영향을 끼치나요? 영향을 많이 끼칠수록, 특정 구현체에 강하게 의존하고 있다는 증거입니다.. 구현체에 강하게 의존하지 않고, 느슨한 연결을 할 수 있도록 애플리케이션을 개선해보면 좋을 것 같습니다.

7.6 마무리

7장에서의 샘플 소스는, AOP 개념을 사용해서, 메모리 기반의 캐싱을 구현하였습니다. 사실, 스프링에서는 캐시 추상화라는 좋은 기능을 제공합니다. 아래와 같이, @Cacheable라는 어노테이션을 스프링 프레임워크에서 기본으로 제공합니다. 아래 샘플 코드와 같이 메서드 상단에 선언해주면, 캐싱이 동작할 것입니다.

스프링의 캐시 추상화를 사용하고 싶다면 몇 가지 설정이 더 필요합니다. 자세한 내용은, 8장에서 알아보겠습니다.

스프링 공부방법

안녕하세요 안녕주입니다..! 방학이 되어 진짜 스프링 공부를 제대로 시작해보려고 합니다.!

과거에 썼던 글이 지금도 알아보기 힘들어서 어떤 강의 & 어떤 책으로 공부 했고 하고싶은지 등등을 다시 정리 하겠습니다!

[스프링부트와 AWS로 혼자 구현하는 웹 서비스]로 예제 코드들을 따라치며 공부했는데,

어렵지 않고 처음에 공부하기 쉽다는 생각을 했습니다!

[자바 ORM 표준 JPA 프로그래밍]은 보진 못했지만 유명하고… 김영한 님이 워낙 유명하시기에

기회가 될때 구매해서 공부해볼 예정입니다.

예… 필독서죠,,,? 버전이 너무 예전꺼라 이해가 될지 모르겠지만, 모르는 개념들을 한번씩 찾아볼때 좋다고 합니다!

<아래서 부터는 개발할때 도움이 될 지식을 주는 책들>

서버 개발자가 될 거라면 꼭 읽어보고 공부해야할.. 클린코드

객체지향 언어를 사용하다보니,,, 객체지향의 사실과 오해 책은..필독서 입니다..

디자인패턴! 공부 책

인강

초보라면 우선 인프런의 로드맵대로 강의를 듣는 것을 추천드립니다.! 처음에 강의부터 들었을 때 이해하기 어려울 수 있어서, 책으로 먼저 가볍게 공부를 한 다음에, 강의를 2회독 정도를 하면 2회차때 이제 아….. 대강 알아 듣겠다..! 하겠더라고요…..

어렵더라도.. 오래 걸리더라도 포기하지 않고 공부하는 게 중요하다는것을 깨달았던 것 같습니다!

저도 작년에 강의 듣다가 하나도 모르겠어서 포기하고 다른 공부를 하다가 일년이 지난 지금 이제서야 조금 이해가 되기 시작하더라고요

나만 모르겠는게 아니라 모두가 어려워하는 것이니까 포기하지 않고 꾸준하게 천천히 공부해봅시다!!

그리고 예전에 구글링 하면서 백엔드 공부를 위해 꼭 알아야하는 개념들 기록해둔것

백엔드: 자바 기초 배우기 객체 지향 프로그래밍, 파일 IO, 멀티 스레드의 개념을 꼭 배우시길 바랍니다. 유닛 테스트를 꼭 잘 배우시구요. 로그 라이브러리 사용법도 알아야 합니다. 자료 구조 중 list, map의 용도와 사용법, 그리고 하위 클래스들의 사용법은 필수입니다. 가능하다면 TDD를 해 보시고, 좋은지 나쁜지는 스스로 판단하시기 바랍니다. 이클립스(혹은 inteliJ)와 같은 IDE 사용법, 그리고 maven과 gradle의 기초에 대해서도 배워야 합니다.

프론트엔드 분야: Javascript, HTML, CSS, JQuery, Angular.JS, React.JS 등의 지식을 습득합니다. box model의 이해, 프론트 엔드 개발 도구들, 기타 등

데이터베이스 기초: 관계형 데이터베이스, NoSQL(mongdb), 웹 서버와 데이터베이스의 연동에 대해 공부합니다.

VirtualBox또는 AWS, Heroku 등을 이용한 내 서버 마련하기, 그리고 추가적으로 클라우스 서비스에 대해서도 가볍게 공부하시길 권합니다.

네트워크의 기초: tcp/ip, 소켓의원리, http의 구조, 웹 서버와 웹 브라우저의 동작 원리 등에 대해서도 아시는 게 좋습니다.

REST API: 웹 페이지와 웹 서비스와의 차이점, REST API란 무엇인가?

백엔드 개발자 초보 탈출!

초보를 탈출하고 나서 여러분들에게 도움이 될 만한 것들을 나열해 보았습니다.

백엔드 심도있게 공부해보기 (아무래도 스프링이 좋은 것 같아요. 다른 것도 괜찮습니다.)

디자인 패턴 (head first desgin pattern이 좋다고 합니다.)

effective Java 읽어 보기

다른 소스 많이 읽고 많이 짜 보기 (개인적으로 이희승님의 netty를 공부하는 걸 추천합니다.)

reflection, generic에 대해 조금 더 깊게 배워야 할 것 같습니다.

virtual machine의 동작 원리, 가비지 콜렉션의 원리, bytecode의 이해

성능 프로파일링 도구

로그 수집 툴

오지는 컴퓨터 공부님의 페이지에서 참고용으로 따왔습니다. 문제시 삭제하겠습니다.

<자바 개발자 로드맵>

<백엔드 개발자 로드맵>

https://skmouse.tistory.com/entry/2021-JAVA-백엔드-개발자-로드맵

So you have finished reading the 스프링 부트 공부 topic article, if you find this article useful, please share it. Thank you very much. See more: 스프링부트 공부 순서, 스프링 공부 순서, 스프링부트 책 추천, 스프링 공부 방법, 스프링 스프링부트 차이, 스프링 독학, 스프링 공부 기간, 스프링 공부 사이트

Leave a Comment