본문 바로가기

Develop/Java & Spring

[Spring Boot] 게시판 프로젝트 외전 #1 JUnit과 Mockito를 이용한 테스트 - 이론 게시판 프로젝트를 1차적으로 마무리하고 나서 계속 버전업을 시키려고 어떤 걸 해야할까 생각을 하던 중 정처기 공부를 하며 알게 된 Testing을 프로젝트 초기에 적용시켜봐야겠다 생각하고 공부를 시작했다.테스트 코드를 작성하는 건 처음이라 모르는 것 투성이인 상태였고 공부를 위해 기초적인 개념과 용어부터 정리해봤다.#1. 단위 테스트(Unit Test)1.단위 테스트란?소프트웨어 개발에서 개별적인 코드 단위를 테스트하는 것을 의미코드의 작은 부분을 격리시켜 하나의 모듈을 만들어 독립적으로 테스트함으로써 코드의 정확성과 신뢰성을 검증하나의 모듈이란 각 계층에서 하나의 기능 또는 메소드로 이해할 수 있으며 이 기능이 올바르게 동작하는지 독립적으로 테스트하는 것자동화가 되고 반복 가능하며 버그를 빠르게 찾아내.. 더보기
[Spring Boot] 게시판 프로젝트 #4 Service, Controller 구현 Service : Business Logic을 담당하는 부분. DB로부터 데이터를 받거나 전달해주는 역할을 한다Controller : View로부터 오는 API 요청들을 어떻게 처리할 것인지 정의하는 역할을 한다=> /board/list란 경로로 GET 요청이 왔을 때 어디로 보내고,   /board/post란 경로로 GET 요청이 올 때 어디로 보내고,   POST 요청이 오면 xxService로부터 Data를 받아와서view로 Attribute를 전달하는 등@Controller : Handler가 Scan 할 수 있는 Bean 객체가 되어 Servlet용 컨테이너에 생성된다.@Service, @Repository : 해당 Class를 루트 컨테이너에 Bean 객체로 생성com.board.service.. 더보기
[Spring Boot] 게시판 프로젝트 #3 DTO, Repository 구현 DTO와 Repository란 무엇일까?DTO(Data Transfer Object) : 계층 간 데이터 교환을 위한 Java BeanRepository : Database에 CRUD 명령을 실행하게 만드는 Interface         (JpaRepository를 extends 하게 되면 CRUD를 사용할 수 있게 된다.)BoardDto : 게시판 API 간에 Data를 전달하는 DTOcom.board.dto.BoardDto.javapackage com.board.dto;import java.time.LocalDateTime;import com.board.domain.Board;import lombok.*;// DTO : 데이터 전달 목적// 데이터를 캡슐화한 데이터 전달 객체@Getter@Sette.. 더보기
[Spring Boot] 게시판 프로젝트 #2 Domain(Entity), Util 구현 domain 패키지 내부 Class 혹은 Enum 파일들은 DB 처리용으로 DB Table과 Mapping되어 DB와 직접적으로 데이터를 교환할 때 사용된다.domian 패키지 안에는 Board, Time 2개의 파일이 존재하는데Board : 게시판 글에 대한 정보를 담고 있는 테이블Time : 데이터 조작 시 자동으로 날짜를 수정해주는 JPA의 Auditing 기능을 사용한다. 이 Time Class를 다른 Entity들이 상속받아 사용하여 자동으로 일시를 부여해준다.게시글 Entity인 Board가 필요로 하는 속성은 게시글을 구분할 {id, 제목, 내용, 작성자, 작성일시, 수정일시}로 그 중 작성일시와 수정일시는 클라이언트가 직접 입력하는 것이 아니라, JPA Auditing 기능을 사용해 글이 .. 더보기
[Spring Boot] 게시판 프로젝트 #1 세팅 Spring Boot로 게시판 백엔드 서버를 만들어보자정처기 공부를 시작하면서 직접적인 코딩보다는 이론과 알고리즘 위주의 공부를 하다보니 실질적인 프로젝트를 구현하는 데 필요한 감각이 많이 떨어졌다는 생각이 들어 간단한 게시판 프로젝트를 통해 감을 되찾고 새로운 기술들도 적용해보고자 한다.우선은 기본적인 게시판 기능만 구현해 놓고 후에 회원가입 등 기능을 추가해가며 프로젝트를 발전시켜나가 볼 생각이다.#1. 요구 사항 정의전체 게시글 목록 조회게시글 전체에 대하여 제목, 작성자명 조회하기게시글 ID 내림차순으로 정렬하기게시글 작성제목, 작성자명, 작성 내용 등을 DB에 저장선택한 게시글 조회선택한 게시글의 제목, 작성자명, 작성 날짜, 작성 내용 등을 조회선택한 게시글 삭제선택한 게시글을 DB에서 삭제게.. 더보기
BufferedReader, BufferedWriter,StringTokenizer, StringBuilder 빠른 입출력을 위한 함수들 최근 알고리즘 연습문제들을 풀기 시작했는데 입출력 제한시간이 정해져있기도 하고 개인적으로도 입출력 시간을 단축하고 싶다는 생각이 들어 찾아보던 중 원래도 알고 있었고 실제로 사용도 해봤지만 자세히는 몰라 잘 사용하지 않던 BufferedReader와 BufferedWriter가 입출력 시간 단축에 도움이 된다는 글을 보고 사용하기 전에 한 번 제대로 공부해 봐야겠다는 생각이 들었다.BufferdReader / BufferedWriterBufferedReader와 BufferdWriter는 버퍼를 사용하여 데이터를 입출력하는 함수다.설명만 들었을 때는 간단한데 버퍼가 무엇인지 잘 모르는 상태에서는 뜬 구름 잡는 소리처럼 들려 버퍼가 무엇인지에 대해 먼저 알아보기로 했다Buffer란?두개의 장치 사이에서 데.. 더보기