자바

    [JAVA] 객체 지향 4대 특성(캡! 상추다: 캡슐화/상속/추상화/다형성)

    들어가기 전에 이번 포스팅은 스프링 입문을 위한 자바 객체 지향의 원리(김종민 저)를 읽으면서 객체 지향 4대 특성에 대해 정리한 글입니다. 이해한 내용을 토대로 정리한 글이기 때문에, 책으로 읽어보는 것을 권장합니다. 기본 개념 잡기 객체(object)와 분류(class) 먼저, 실생활로 객체지향의 객체(object)와 분류(class)에 대해 간단히 살펴보겠습니다. 세상에 존재하는 모든 것은 사물(개체, 객체, object)입니다. 각각의 사물은 고유하며, 속성 및 행위를 가집니다. 사물을 하나하나 인지하기 보다는 사물을 분류(class)하여 이해를 합니다. 예) 밤하늘에 반짝이는 사물들을 별이라고 분류합니다. 객체란, 세상에 존재하는 유일무이한 사물(개체) 클래스란, 같은 속성과 기능을 가진 객체를..

    [SpringBoot] 게시판 구현하기 12 (파일 업로드와 다운로드)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 파일 업로드와 다운로드에 대해 살펴보도록 하겠습니다. 웹 어플리케이션에서 파일 관련 기능은 매우 중요합니다. 일반적인 게시판만 해도 파일을 첨부할 수 있고, 대다수의 SNS는 이미지와 함께 글을 작성합니다. 쉬워보일 수 있으나, 내부적으로는 구현해야 할 기능이 많아 여러 가지를 생각해야 합니다. 예를 들어 사용자 편의를 위해 파일 업로드 시 드래그 앤 드롭 기능, 첨부파일의 유효성 검사, 파일 전송의 진행률이나 예외처리 등 고려할 것들이 많습니다. 여기서는 파일 업로드 및 다운로드 시 핵심적인 내용에 대해서만 다룰 것입니다. 파일 첨부를 위한 기본 설정 먼저 파일 업로드와 다운로드 기능 구..

    [SpringBoot] 게시판 구현하기 9 (스프링의 다양한 기능 살펴보기 - AOP)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 AOP에 대해 살펴보도록 하겠습니다. AOP(Aspect Oriented Programming, 관점지향 프로그래밍) AOP란, OOP(Object Oriented Programming, 객체지향 프로그래밍)를 더욱 OOP답게 사용하도록 도와주는 개념입니다. 객체지향이란, 기능과 데이터들을 모아 재사용이 가능한 객체로 캡슐화하는 것을 의미합니다. 이렇게 캡슐화된 클래스들을 프로젝트 내 여러 곳에서 반복적으로 재사용하여 생산성을 높일 수 있습니다. 하지만, 실제 어플리케이션을 개발하다보면 객체의 핵심코드 외에도 여러 기능이 들어 갑니다. 메소드 호출 전후의 로그, 데이터 검증 및 확인 로그,..

    [SpringBoot] 게시판 구현하기 8 (스프링의 다양한 기능 살펴보기 - 인터셉터)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 인터셉터에 대해 살펴보도록 하겠습니다. 인터셉터(Interceptor) Spring의 인터셉터는 어떠한 URI을 호출했을 때 해당 요청의 컨트롤러가 처리되기 전 또는 후에 작업을 하기 위해 사용됩니다. 이러한 역할은 필터(Filter)와 인터셉터(Interceptor)로 수행할 수 있습니다. 먼저, 필터(Filter)와 인터셉터(Interceptor)의 차이를 알아보겠습니다. 필터(Filter) VS 인터셉터(Interceptor) 필터는 디스패처 서블릿 앞 단에서 동작하지만, 인터셉터는 디스패처 서블릿에서 컨트롤러로 가기 전에 동작합니다. 필터는 J2EE 표준 스펙에 있는 서블릿 기능 중..

    [SpringBoot] 게시판 구현하기 7 (스프링의 다양한 기능 살펴보기 - 로그)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 로그에 대해 살펴보도록 하겠습니다. Log(로그) 개발 시 발생할 수 있는 에러 확인 및 유지보수 등을 위해 로그를 분석해야할 필요성이 있습니다. 이에 따라 사용자가 보기 쉽도록 로그를 남겨야합니다. Logback이란? 오랫동안 널리 사용되고 검즈된 Log4j를 기반으로 작성된 로그 라이브러리입니다. Log4j와 비교해서 성능이 10배정도 빠르고 메모리 사용량이 적습니다. Logback을 사용한 로그 설정 변경의 경우, 서버를 따로 재시작하지 않아도 바로 반영된다는 장점을 가지고 있습니다(Logback은 로그 설정이 변경될 경우 내부의 설정 변화 감지 스레드가 이를 감지하여 반영하기 때문,..

    [SpringBoot] 게시판 구현하기 5 (게시글 상세 화면 만들기)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 시간에는 앞서 등록한 게시글을 확인할 수 있는 상세 화면을 만들어 보겠습니다. 게시글 상세 화면 만들기 게시글 상세 화면 만들기 전 조회 로직의 흐름에 대해 먼저 살펴보겠습니다. 목록 화면에서 상세 내용을 확인하고 싶은 글을 선택합니다. 즉, 목록 화면에서 선택된 글의 상세 화면을 호출하는 기능이 필요합니다. 선택된 글의 상세 내용을 조회하고 조회수를 증가시킵니다. 즉, 상세 내용을 조회할 때 비즈니스 로직은 목록 조회와 다르게 두 가지가 됩니다. 비즈니스 로직을 처리하는 서비스 영역에 두 가지 작업(게시글 조회 & 조회수 증가)을 진행해야 합니다. 조회된 글 내용을 화면에 표시합니다. 목록 화면 수정..

    [SpringBoot] 게시판 구현하기 2 (게시판을 만들기 위한 기본 설정)

    시작하기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 간단하게 게시판을 구현해보도록 하겠습니다. 앞서 데이터베이스를 만들기만 했으므로, 데이터베이스에 데이터도 넣어보고 스타일 시트 추가 및 롬복 설정을 해보겠습니다. 데이터베이스 구성하기 먼저 기존에 생성한 데이터베이스(example)에 테이블을 만들어보도록 하겠습니다. 아래 쿼리를 이용해 게시글을 저장할 테이블을 생성합니다. DBeaver 기준으로 table 생성하는 방식은 아래와 같습니다. 1. table을 생성하고자 하는 database를 마우스 오른쪽 버튼으로 클릭한 후 Create > Table을 클릭합니다. 2. 그 후 나온 화면에서 테이블명을 정해준 후 오른쪽 하단에 위치한 컬럼 ..