목록Framework/Spring (24)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/B0OFE/btrLTU7qvmE/yNz6k3DDCKU9MKmWtlgOz0/img.png)
테스트 코드를 작성하는 이유 개발 과정에서 문제를 미리 발견할 수 있다. 리팩토링의 리스크가 줄어든다. 문서로서의 기능을 한다. 테스트 코드를 작성하는 가장 큰 목적이 첫 번째 이유이다. 테스트 코드를 작성하고 테스트하는 것은 코드에 잠재된 문제를 발견하는데 큰 도움이 된다. 일부러 에러가 발생하는 테스트 코드를 만들어서 예외처리가 잘 되는지 확인하거나, 비즈니스 로직에 맞춰 테스트 코드를 작성해서 결괏값이 참(200)으로 잘 나오는 지 확인하는 등의 방법으로 애플리케이션을 테스트한다. 애플리케이션을 개발하면 서비스 업데이트와 유지보수를 위해서 계속해서 코드를 수정하고 추가한다. 코드를 수정하는 것은 다른 애플리케이션 코드에 영향을 주는 위험한 작업이다. 그래서 테스트 코드를 작성하면 수시로 전체 애플리..
스프링 부트로 프로젝트를 하면서 db 민감정보를 버전관리에서 제외시키려고 application.properties를 gitignore 처리했었다. gitignore 처리했더니 mybatis 설정, view 설정 등 다른 사람이 봐도 되는 설정들을 볼 수가 없고, 무엇보다 나중에 git clone 해서 프로젝트를 내려받을 때 application.properties 파일을 따로 생성해야 하는 불편함이 생겼다. 그래서 db의 설정정보를 외부에다 위치시키고, 그 파일을 읽어오는 방식을 사용했다. 1. 먼저 application.porperties 안에 있는 db 설정정보를 없앤다. # MySQL DB 설정 #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Dri..
빌더 패턴이란 객체를 정의할 때 생성자를 통해서 정의하는게 아니라 builder를 이용해서 정의하는 방법을 빌더 패턴이라고 한다. Post post = new Post(1, "테스트", "테스트 내용", "2022-07-28 18:26:39", 0, 1, 2); -> Post post = Post.builder() .id(1) .title("테스트") .content("테스트 내용") .writeTime("2022-07-28 18:26:39") .viewCount(0) .state(1) .writerId(2) .build(); 빌더를 사용하는 이유 1. 생성자의 매개변수가 많으면 가독성이 떨어진다. 위의 board에서 봤듯이 각 값들이 어떤 값을 의미하는 지 알기 힘들다. 물론 ide 에서는 매개변수 옆..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zjorV/btrHfnMMhGd/qpTkWP5cxnMSKhdusD0220/img.png)
스프링 부트 spring란 자바 기반의 애플리케이션 프레임워크이다. 엔터프라이즈급 애플리케이션(대규모 데이터를 처리하는 등 기업 환경의 애플리케이션)을 개발하기 위한 다양한 기능을 제공한다. 이 스프링은 목적에 따라 다양한 프로젝트를 제공하는데, 그중 하나가 스프링 부트이다. 스프링 부트를 이용하여 프로젝트를 생성하는 방법에는 여러가지가 있지만, 아래의 이니셜라이즈 사이트를 이용하여 생성해봤다. 프로젝트 생성 스프링 이니셜라이즈 사이트 : https://start.spring.io/ Snapshot daily build 버전. 실험 중인 버전. 새로 개발 중인 기능이 있을 수 있다(인터페이스가 변경 될 수 있음) M(Milstone) Snapshot 보다 정리가 잘 되어 있는 버전. 실험 중인 버전. 새..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bra6JU/btrLLi8zLIr/4gSBtIpWr899Ccki7PXvYK/img.png)
logback 설정 파일이 적용된 로그를 봤더니 spring에서 기본적으로 적용됐던 로그 색상이 사라졌다. 로그의 색상을 수정하려면 아래와 같이 logback 설정 파일을 수정하면 된다. 1. conversion rule 추가 ....생략.... 2. pattern 부분 수정 %clr([%d{yyyyMMdd HH:mm:ss.SSS}]){magenta} %clr([%-5level]) [%thread] %clr(%logger){cyan} %msg%n 그 결과 다시 색상이 알록달록하게 변했다. 원리 spring-boot-버전.jar / org.springframework.boot / logging / logback 안에 있는 logback 설정 파일을 보면 원리를 알 수 있다. default.xml 색상 변경..
REST API를 개발할 때 update 부분 : PostMapping -> PutMapping delete 부분 : GetMapping -> DeleteMapping 으로 변경해보라는 조언을 받아 공부하게 되었다. @DeleteMapping DeleteMapping은 데이터를 delete할 때 사용하는 매핑이다. html 삭제 form에다 method="delete" 이렇게 하면 정상적으로 되지 않고, 저런식으로 hidden type을 생성하고 name="_method" value="delete" 해야 delete method로 보낼 수 있다. controller @DeleteMapping("/{id}/delete") public String deleteMovie(@PathVariable int id)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BAJmv/btrLLWdQSaz/tJBPaxCStQkaiclfPY08mK/img.png)
Swagger란 https://swagger.io/ API Documentation & Design Tools for Teams | Swagger swagger.io Swagger는 웹 서비스 명세를 문서화 해주는 오픈 소스 소프트웨어 프레임워크이다. 즉, 웹 서비스가 어떤 로직을 수행하고, 이 로직을 수행하기 위해서는 어떤 값을 요청하며, 이에 따른 응답값은 무엇인지 정리해서 문서화해주는 프로젝트이다. 보통 웹 애플리케이션을 개발할 때 프론트 팀과 백엔드 팀으로 나누어서 개발을 하는데, 이 때 백엔드 팀이 만든 서비스를 swagger로 문서화해서 프론트 팀으로 넘겨 로직의 이해도를 높이고, 소통한다.swagger을 사용하면 개발과정 속에서 계속 변경되는 명세 문서를 알아서 주기적으로 업데이트해주기 때문..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l65pC/btrLAqSKinS/M7dYkxiPiRFVwBTsGpMUl1/img.png)
Logback https://logback.qos.ch/ Logback Home Logback Project Logback is intended as a successor to the popular log4j project, picking up where log4j 1.x leaves off. Logback's architecture is quite generic so as to apply under different circumstances. At present time, logback is divided into three mod logback.qos.ch 로깅(logging)이란 애플리케이션이 동작하는 중에 시스템의 상태나 동작 정보를 서버측에 시간순으로 기록하는 것이다. 애플리케이션을 개발할 때(..