Post

[KT AIVLE] Spring 3일차 - 심화학습

0. 개요


오늘도 어제에 이어서 css를 학습하였으며 Spring initializr를 통하여 프로젝트 생성을 하였습니다.


1. css


  • 박스 모델
    • 외부 디스플레이 유형
      • block
      • inline
      • inline-block
    • 내부 디스플레이 유형
      • display : flex
      • display : grid
      • display : flow
  • 레이아웃 모델
    • 노멀 플로우(Normal Flow)
      • 웹 페이지 요소들이 기본적으로 어떻게 배치되는지 알아야 함
    • 플로트(Float)
      • 텍스트 블록 안에 이미지를 배치하기 위해 사용되는 속성
    • 포지셔닝(Positioning)
      • 요소를 문서의 일반적인 레이아웃 흐름으로 벗어나 배치할 수 있음
    • 플렉스 박스(Flexbox)
      • 행이나 열로 요소를 배치하는 1차원 레이아웃 메서드
    • 그리드(Grid)
      • 웹 페이지를 위한 2차원 레이아웃 시스템으로, 행과 열로 콘텐츠를 배치
    • 멀티 레이아웃
      • 콘텐츠를 여러 단으로 나누어 배치하는 방법
    • 반응형 디자인
      • 다양한 화면 크기에 맞게 레이아웃과 모양을 변경하는 디자인 방법
    • 미디어 쿼리
      • 장치의 특성에 따라 다른 스타일을 적용하는 방법
  • 추가
    • 반응형 웹 : 모바일 대응을 위한 디자인


2. Spring


  • 웹의 동작 구조
    1. 웹 브라우저에서 도메인을 입력한다.
    2. DNS 서버는 해당 도메인을 가진 IP 주소를 웹 브라우저에게 전송한다
    3. 웹 브라우저는 IP 주소의 해당 서버에 접속을 시도 한다. 웹 서버는 접속을 기다리다 접속 요청이 들어오면 수락한다.
    4. 웹 서버는 요청 내용을 분석하고 요청된[index.html] 파일을 읽는다.
    5. 웹 서버는 파일 내용을 클라이언트에 전송한다.
    6. 웹 브라우저는 웹 서버로부터 받은 내용을 이용하여 HTML 태그를 분석해 화면을 구성한다

Spring Framework

  • 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘 등의 기능들을 위해 뼈대를 제공
  • Spring Framework의 특징
    • OOP + POJO Desktop View
      • OOP(객체 지향 프로그래밍 (Object-Oriented Programming))
        • 절차 지향 프로그래밍과 객체 지향 프로그래밍
      • POJO (Plain Old Java Object)
        • 특정 기술에 종속되어 작동하는 것이 아닌 순수한 자바 객체를 의미
        • 객체 지향 프로그래밍(OOP)의 특징
            1. 캡슐화 : 낮은 결합도를 유지할 수 있도록 설계하는 것
            1. 상속 : 자식 클래스에서 부모 클래스로부터 자원을 물려받는 것
            1. 다형성 : 한 객체가 다른 여러 형태(객체)로 재구성될 수 있다.
            1. 추상화 : 공통의 속성이나 기능을 묶어 이름을 붙이는 것
      • 객체 지향 설계 원칙(SOLID)
        • SRP : 단일 책임의 원칙 (Single Responsibility Principle)
        • 객체 지향 설계의 핵심은 응집도는 높게, 결합도는 낮게 프로그램을 설계
          • 한 클래스가 수행할 수 있는 기능(책임)이 여러 개라면, 클래스 내부의 메서드끼리 강한 결합을 갖게 될 가능성이 커지게 된다.
        • OCP : 개방 - 폐쇄 원칙 (Open-Closed Principle)
          • 자주 변화하는 부분을 추상화 하여, 기존의 코드를 수정하지 않고도 기능을 확장시킬 수 있게 설계하여 유연성과 재사 용성, 유지보수성을 높이는 것이 핵심
        • LSP : 리스코프 치환 원칙 (Liskov Substitution Principle)
        • ISP : 인터페이스 분리 원칙 (Interface Segregation Principle)
        • DIP : 의존관계 역전 원칙 (Dependency Inversion Principle)
          • 사용자가 상속 관계로 이루어진 모듈을 가져다 사용할 때, 하위 모듈의 인스턴스를 직접 가져다 쓰지 말고, 상위 인터페이스 타입의 객체를 사용하라는 원칙이다.
  • IoC - 제어의 역전 (Inversion of Control)
    • 스프링 프레임워크에 제어권을 위임하게 되면 기존에 개발자가 모든 제어권을 가지고 관리를 할 때 생기는 문제점(강한 결합도, 유연성 부족, 테스트 어려움 등)을 해결할 수 있다.
  • DI - 의존성 주입
  • AOP - 관점 지향 프로그래밍
    • 핵심 관심사와 횡단 관심사에 대한 관점들로 프로그램을 분해하여 객체 지향이 추구하는 모듈을 효과적으로 지원하도록 하는 프로그래밍 기법을 의미한다.
    • 기능별로 모듈을 분리 했음에도 불구하고 생기는 중복 코드의 단점을 해결하고자 나온 방식으로, 공통 기능과 핵심 기능을 분리하여 필요할 때만 공통 기능을 핵심 기능에 넣어주는 형식
  • PSA(Portable Service Abstraction)
    • 환경과 세부 기술의 변화 없이 일관된 방식으로 기술에 접근할 수 있게 해주는 것

Spring Boot

  • 개발환경 구축(본 설명은 Java와 기본 프로그램들이 설치되어있는 환경을 가정합니다.)
    • 본 링크(https://start.spring.io/)를 통해 프로젝트 생성
    • Eclips를 통해 프로젝트 불러오기


3. 후기


오늘도 css를 마무리 하였으며 Spring를 통한 프로젝트 생성을 진행하였습니다. 예전에는 Spring를 수동으로 하였었던걸로 기억하는데 최신 방법을 알 수 있어서 유익한 시간이였습니다!

This post is licensed under CC BY 4.0 by the author.