ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [모각코] 3주차 결과 (7/18 13:00 ~ 16:00)
    카테고리 없음 2022. 7. 18. 16:00

    Build

    • 필요한 라이브러리를 다운 받고 classpath에 추가
    • 소스 코드를 컴파일
    • 테스트를 실행함
    • 컴파일된 코드를 packaging함 (jar, war, zip)
    • packaging된 파일들을 artifacts라 부르고 서버나 레포지토리에 배포함

    Maven

    • 자바용 프로젝트 관리도구

    • 프로젝트의 전체적인 라이프 사이클을 관리한다.

    • xml 기반으로 설절 모델을 제공하고 pom.xml 파일로 작성할 수 있다.

    • archetypes 라는 프로젝트 템플릿을 제공하여 매번 같은 설정을 반복하지 않게 도와준다

    • 프로젝트에서 사용하는 외부 dependency를 관리해준다

    • 플러그인과 외부 라이브러리를 분리하여 관리한다

    • Maven Coordinates

      • Maven 프로젝트를 식별하는데 사용
      • groupid : 주로 회사나 단체명을 작성 ex) org.springframework, org.prgms
      • artifactId : 주로 프로젝트명을 작성 ex) sprint-context, order-api ..
      • version : 프로젝트 버전을 작성 ex) 0.0.1-SNAPSHOT
    • build lifecycle

      https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FysAxy%2FbtqBTLmONJO%2FDH8KRLC3rkduni6kBY9UnK%2Fimg.jpg

      • 미리 정해진 빌드 순서
      • Maven은 프레임워크이기 때문에 동작 방식이 정해져있고, 미리 정의하고 있는 빌드 순서가 있다. 이를 라이프사이클이라 한다.
      • Default(Build)
        • 컴파일, 테스트, 압축, 배포와 같은 작업을 모두 실행하는 라이프 사이클
        • Compile → Test → Package → Install → Deploy
      • Clean
        • 빌드를 통하여 target 디렉토리에 생성된 모든 산출물을 삭제하는 라이프 사이클
      • Site
        • 프로젝트에 대한 문서 사이트를 생성할 수 있도록 지원
    • phase(단계)

      • Build lifecycle의 각 단계를 phasefkrh gksek.
      • phase는 의존관계를 가지고 있어 해당 phase가 수행되려면 이전 단계의 phase가 모두 수행되어야한다.
    • Goal

      • 특정 작업을 말하며, 최소한의 실행 단위이다
      • 하나의 플러그인에서는 여러 작업을 수행할 수 있도록 지원한다 (플러그인이 실행하는 명령들)
      • 플러그인에서 실행할 수 있는 각각의 기능을 Goal이라 한다.
    • 의존범위

      • 라이브러리를 어느 범위까지 적용해서 사용할 것 인지 정의하는 것
      • Compile : 기본값, 모든 단계에서 사용 가능함
      • Provided : 컴파일 시점에만 포함되고 배포할 때는 포함되지 않음 (Survlet, J2EE …)
      • Runtime : 컴파일에서는 사용되지 않고 실행과 테스트에만 사용
      • Test : 테스트하는 시점에서만 적용
      • System : 외부에서 찾는다. 외부의 JAR 파일의 위치를 명시해야함

    Spring Boot

    • 스프링 부트는 컴퓨터를 부팅한다는 말 처럼 시스템을 사용 가능한 상태롤 만드는 것
    • 주요 기능
      • SpringApplication을 통한 손쉬운 실행
      • Auto Configuration
      • 쉬운 외부 환경 설정 - Properties, YAML, Command Line 설정
      • 프로파일을 통한 실행환경 관리
      • Packaging Executable jar
      • Developer Tools

    Spring Framework의 핵심개념

    • Spring IoC 컨테이너 그리고 Beans
    • 리소스 핸들링
    • Validation, Data binding, 타입 변환
    • 스프링 expression 언어
    • AOP
    • Null-safety
    • 데이터 버퍼와 코덱
    • 로깅

    Domain Driven Design

    • Entity
      • 엔터티는 다른 엔터티와 구별할 수 있는 식별자를 가지고 시간의 흐름에 따라 지속적으로 변경이 되는 객체
    • Value Object(VO)
      • VO는 각 속성이 개별적으로 변화하지 않고 그 자체로 고유한 불변 객체
      • JAVA record 사용 (java 14 이상)

    의존성

    • 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이에 의존성을 가지게 된다
      • 컴파일타임 의존성 : 코드를 작성하는 시점에 발생하는 의존성 (클래스 사이의 의존성)
      • 런타임 의존성 : 애플리케이션이 실행되는 시점의 의존성, 객체 사이의 의존성
    • 결합도
      • 하나의 객체가 변경이 일어날 때에 관계를 맺고 있던 다른 객체에 변화를 요구하는 정도
      • 느슨한 결합도를 가지는 것이 바람직하다 → Interface 사용
Designed by Tistory.