DI, IntelliJ + SpringBoot 개발환경 설치

이지수·2022년 4월 19일
0
post-thumbnail

Spring 이란?

  • 스프링 처음 등장했을때는 단순히 객체들 사이에 의존성을 주입하는 컨테이너 역할
  • 현재는 웹부터 빅데이터에 이르기까지 엔터프라이즈 시스템 개발하는 모든 분야를 커버하는 플랫폼
  • 다양한 프로젝트가 많고, 웹을 위한 설정이 복잡해서 3버젼 이전까지는 널리 퍼지지는 못했다.
  • 이런 문제를 해결하고자 스프링부트 프로젝트가 진행되었다.
  • DI, IOC참고: https://velog.io/@leejisoo/DI

SpringBoot란?

  • 스프링의 다양한 프로젝트 기능대신에 웹에 필요한 모듈만 포함한 경량 프레임워크
  • 대부분의 설정을 DEFAULT 세팅하고 있고 필요한 부분은 변경하거나 추가해서 사용
  • 톰캣을 내장하고 있어서 JAR형태로 배포하여 MSA환경과 궁합이 좋다
  • 대세는 스프링부트

스프링이 직접 준비한 3일 숙성한 수비드 등심과 야채, 소금, 후추로 직접 수고스럽게 만드는 스테이크라면
스프링부트는 다 알아서 적당히 준비된 밀키트로 비유할수 있으려나

Intellij 설치

start.spring.io

  • https://start.spring.io/
    • Project: Gradle
    • Language: Java
    • SpringBoot: 2.6.6
    • Dependency: Lombok, SpringBootDevTools, SpringWeb
    • Packaging: Jar
    • Java: 17
  • 화면 하단 GENERATE 버튼을 클릭하면 zip파일 다운

Intellij 프로젝트 import

  • 다운받은 zip파일을 다음 위치에 풀어준다.
    • C:\intellij-workspace\workspace\springboot-study
  • Intellij -> Open -> springboot-study 폴더 지정하고 확인
  • 프로젝트가 열리면 JDK, 및 필요한 모듈을 알아서 다운받음으로 별도로 해줘야할 건 없다.

소스코드 관리는 gitKraken 추천

프로젝트 구조설명

  • springproject구조 설명
  • lombok설명
  • di패턴 3가지 소개 (@Autowired(=Field주입), Setter, 생성자)
    • Autowired: +가장많이 쓰였을껄?, +간단함, -순환참조 가능성, -테스트코드 작성어려움
    • Setter: +간단함, -순환참조 가능성, 의존성이 변경될 가능성이 존재
    • Constructor: +spring에서 권장되는 방식, +테스트 Mocking 용이, +순환참조를 사전 인지, +불변, -단점은 생성자를 만드는 번거로움인데 롬복으로 해결이 가능
  • git에 푸시

실습

  • Controller, Service 생성
  • Service에서 Vo생성하여 리턴
  • Contoller에서 GET Method 정의 Service호출하여 VO리턴
  • Lombok 예시 보여주기

면접질문 포인트

  • DI, IOC에 대해서 설명
  • DI의 방법이 여러가지 있는데 알고있는 방법과 장단점 설명

알고리즘 프로젝트 생성

다음주에 같이 볼 내용

  • 챕터2
    • ❗ (84P ~ 93P) 스프링부트 자동설정 => 중요함 면접 단골문제 탈탈 외워와야 함. 나머지는 Maven에 대한 설명이 대부분이기 때문에 그냥 한번 읽어오면 될듯. 아직 크게 의미가 없어요.
    • Dependency 가 하위 Dependency를 가지고 있고, starter 시리즈는 여러개의 Dependency의 묶음 정도라는 것만 이해하고 있으면 될 것 같음
  • 챕터3
    • 테스트, 로깅 관련 내용으로 이건 한번 다 따라해보면 좋을 것 같음
    • 마지막에 스프링 부트 빌드 하는건 아직 몰라도 될 것 같아요.
profile
공부합시다

0개의 댓글

관련 채용 정보