Home 내 맘대로 Spring
Post
Cancel

내 맘대로 Spring

내 맘대로 팀 입사 교육과정 공통편을 먼저 보고, Spring 으로 이어지는 부분만 따로 적었다.

규칙

  • 실습 Repo : https://github.com/OsoriAndOmori/developer-guide-spring
  • 실습생은 자기 새로운 repo 를 파고 시작
  • Java 건 kotlin 이건 알아서
  • 팀원들에게 주기적으로 배운 내용 공유 & 피드백 받기
  • 하면서 가이드 외 학습 추가 (security, webflux, kotlin 등등)
  1. Spring Framework
    • Servlet
      • apache-tomcat 다운 받기
      • jakarta.servlet-api dependency 하나만 추가후, tomcat 에 띄워서 hello 응답받아보기
    • spring-framework-mvc, war 로 빌드 후 띄워보기
    • embeded-tomcat dependency 추가후, 직접 수동으로 Spring Container 만들어서 Embeded tomcat + dispatcher Servlet 붙여보기
  2. Spring-Boot
    • boot 로 전환해보기
    • spring 에서 autoconfigure 을 어떻게 해주는지 파악해보기 (사용법 말고, 어떻게 auto configuration 들을 코드상에서 찾아서 넣는지)
      • importSelector
    • 유용한 기능 autoconfigure 해주는 starter 하나 직접 만들기
      • gitlab repo 에 jar 업로드하고, repo 로 추가하여 다른 프로젝트에서 다운 받아보기
  3. Spring 학습 이후 다시 생각해보기
    • spring bean 에 관한 기본적인 내용들
      • 싱글톤
      • Spring container : 구글링 해서 할 수 있는 곳 까지 직접 구현해보자 : 샘플
    • 객체지향과 Spring
      • 스프링은 왜 만들어졌을까
    • 객체지향 : 역할 책임 협력
      • 역할 책임 협력을 하게되면 의존성을 서로 가지게 된다.
      • 인터페이스는 귀찮기만하고 뭐하는걸까 대체
      • SOLID
      • 의존성 주입(DI)과 의존성 역전(DI)에 관한 심도있는…
      • 객체지향의 대표적인 안티패턴
        • 순환참조
      • 레이어드 아키텍쳐와 스프링
        • 양방향 레이어드 아키텍쳐
        • 스마트UI 아키텍쳐
      • 스프링의 특징
        • DI
        • IoC
        • AOP
        • PSA
        강의 노트
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        
          - 지난시간 요약
              - SOLID
              - 의존성 주입, 의존성 역전
                  - InterfaceTestConfigTest.java
              - 한 줄 요약 하자면 : 인터페이스를 잘 써서 의존성을 '약화' 시키고, 클래스를 많이 쪼개는 버릇을 들이자
                  - UserSerive 이딴거 금지. 오늘 만들고왔으면 가서 네이밍 변경하던가, 더 쪼갤것
          - 샘플 코드를 먼저 좀 보자
            - TeamTest.java
            - ApplicationWebMvcApplication.java
          - 순환 참조 좀 있으면 안되냐? -> 안됨
            - 예상하지못하는 에러 발생
            - 시스템 복잡도를 높임
            - 무조건 재설계하자
          - 레이어드 아키텍쳐
            - controller, service, repository
            - 구분해놨는데, 다른프레임워크도 보통 이래.. nextjs 보고오자
            - 완전 내 의견으로 c,s,r 의 레이어구분 : 완전 비판적으로 받아들이세요.
              - c 최대 3줄
              - application service 비즈니스로직인데, 남은 비즈니스로직을 실행만 딱딱 시켜주는애 , domain service
              - r 은 persistent layer
          - 내가 생각하는 webflux 기준 레이어드 아키텍쳐
          - smart ui 디자인패턴이 되지말자
            - 트랜잭션 스크립트
          - 요약
            - 레이어드 아키텍쳐를 기억하자
            - 설계후 개발하는걸 습관해보자 interface 적극 활용
              너무 활용했을때 복잡도 높이면 어떡해? 코드 퀄리티 망하는것도 경험해봐야해.
            - 스프링 core 자체 부트캠프는 여기까지, 이후 공부 추천하는 방법 : 인프런에서 마구마구 사며 반복 학습, 빠르게 스킵하고 알짜만 계속 주워먹는다.
        
  4. Spring Batch
    • 그냥 배치돌리는 API 를 jenkins 로 호출해버리면 안됨?
    • chunk oriented 개념
      • 그럼 언제 써야할까
    • 간단한 스프링 배치 구조와 사용법
    • 고급) 싱글쓰레드 배치, 멀티쓰레드 배치
      • synchronized
    • 초 대용량 배치는 어떻게 하면 좋을까. 유저 데이터 억건 이런거
  5. 화면 렌더링 : SSR CSR SEO 풀스택 개발자가 되기위한 첫걸음?
    • 서블릿 프로그래밍 떄부터 이전 화면 렌더링 전략들
    • 대세 thymleaf 와 react
      • SSR, CSR 의 장점과 단점
    • 개발자의 부족한 디자인 감성으로 화면 만들때 도와주는 도구들
  6. 공통편에 얹히는 Spring 항목
    • DB
      • propagation 실습
      • Spring AOP 와 트랜잭션
      • 커넥션 풀 : HikariCP maximumPoolSize x 인스턴스 수 <= DB max connections
    • 캐시와 타임아웃
      • 스프링 로컬캐시 caffeine, ehcache
    • 로깅
      • spring application 로그 설정
    • 모니터링
      • micrometer 로 prometheus 연동
      • 일부러 dbcp 소진하고 모니터링 해보기
      • jvm heap 메모리 전부 소비하고 모니터링 해보기
      • jvm heap dump 분석
    • 테스트
      • fixture-monkey 적극 이용하자
    • 코딩 스킬
      • 매일 15분 정도 spring 코드 뒤져보기

        강의노트
        1
        2
        3
        
          - propagation
            - REQUIRED - 트랜잭션이 필요해, 생성 + 만나면 기존거에 참여
            - REQUIRED_NEW - 새 트랜잭션이기 때문에, 커넥션 고갈야기 할 수도잇음
        

더 알아보면 유용할 주제

  1. Webflux
  2. Kotlin
This post is licensed under CC BY 4.0 by the author.

나의 코딩 컨벤션

-