Home
won983212
Cancel

[Spring] 시간표 기능 ERD 구상하기

데이터 형태 우선 시간표를 웹상에서 어떤 방식으로 주고받을지 생각해보았습니다. 시간표는 아래와 같은 조건들이 있습니다. 시간표는 이름을 가지고 있다. 각 시간표는 여러 수업을 포함한다. 수업은 이름, 장소, 강사, 수업 시간, 색상을 포함한다. 수업 시간은 시작 시각, 종료 시각, 요일이 포함된다. 수업 하나에 여러 수업 시간이...

[Spring] 스프링 부트 각종 테스트 방법 (2) - Controller

1편 - service 2편 - controller 3편 - repository Controller 테스트 스프링 웹 앱은 기본적으로 컨트롤러 없이도 비즈니스 로직이 동작하도록 설계되면 좋습니다. 그렇다고 컨트롤러를 만들지 말라는 뜻은 아닙니다. 컨트롤러는 그저 외부의 요청을 잘 받고 응답을 잘 주는 역할을 수행해야 한다는 뜻입니다. 그래서 ...

[Spring] 스프링 부트 각종 테스트 방법 (1) - Service

1편 - service 2편 - controller 3편 - repository 서론 이 글에는 제가 테스트 코드를 작성하면서 겪은 여러 시행착오들이 담겨있습니다. 아직 완벽하게 작성된 글은 아니라고 생각합니다. 이 글은 앞으로 테스트에 대한 깨달음이 생길때마다 계속 업데이트할 예정입니다. 테스트를 작성해야하는 이유 여러분들은 기능을 구현하...

[Server] 총학생회 홈페이지 서버 아키텍처

총학생회 홈페이지의 서버 아키텍처입니다. 클라우드 서비스는 지원받고 있는 NHN Cloud 사용중입니다. Load balancer Load Balancer는 Nginx를 사용하고 있습니다. NHN Cloud에서 자체 제공하는 Load Balencer도 있지만, 사용하지 않는 이유는 SSL 인증서를 수동으로 업데이트 해야한다. 각 도메...

[CS] 프레임워크와 라이브러리

프레임워크와 라이브러리 백엔드 서버에 자주 사용되는 Spring은 프레임워크입니다. 그런데 프론트엔드 SPA 웹 제작에 사용되는 React는 라이브러리지요. 무슨 차이가 있는걸까요? 결론부터 말씀드리면 프로그램 제어 흐름의 주도권을 누가 쥐고있느냐의 차이가 있습니다. 프레임워크 프레임워크는 공통 개발에 사용될 수 있는 기능들을 제공하고, 프로그...

[CS] Blocking, Non-Blocking vs Sync, Async

서론 이 두 개념은 얼핏보면 비슷하지만, 작업 처리를 바라보는 관점이 다릅니다. Blocking과 Non-Blocking은 작업을 요청한 곳에서 다른 일을 할 수 있느냐가 중요한 포인트입니다. Sync와 Async는 여러 작업을 요청했을 때 작업들이 어떤 순서로 처리되는지가 포인트입니다. Blocking, Non-Blocking 이 개념은 호...

[Spring] API서버 Error Handling 전략

기존에 사용했던 Error handling 전략 모든 에러를 처리할 수 있는 슈퍼 Exception을 만들어 사용했습니다. 이 Exception에는 ErrorCode가 포함됩니다. 이 ErrorCode를 통해 이 Exception을 처리할 때 어떤 status code와 메시지를 보여줄지 정합니다. @RequiredArgsConstructor @G...

[Spring] Lombok @Builder 생성자에 사용할 때 default값 설정하기

Class에 붙이는 @Builder Lombok에서는 @Builder라는 유용한 어노테이션을 제공합니다. 이 어노테이션을 사용하면 Builder를 자동으로 생성해줍니다. 만약 class level에 사용하면 아래와 같이 기본값을 쉽게 줄 수 있습니다. @Builder public class Example { @Builder.Default ...

[Spring] MVC 내부구조

기존 Servlet MVC의 몇 가지 문제점들 Spring에서 제공하는 MVC 패턴은 편리한 기능을 많이 제공합니다. Servlet에서 겪을 수 있던 공통적인 부분들을 포함해서 몇 가지 문제점들을 해결해서 지금의 Spring이 되었습니다. 기존의 Servlet MVC 구조에서 찾아볼 수 있는 문제점들은 아래와 같습니다. Controller들에...

[Java] Garbage Collector

JVM의 Heap 메모리 관리 우리는 자바를 사용하면서 객체를 만들고, 따로 메모리 해제하는 작업을 하지 않습니다. C언어에서는 메모리 누수를 막기위해 heap을 사용하고, 반드시 free를 통해 해제해주어야 하는데요. 자바는 그런 과정을 개발자가 따로 해주지 않습니다. int* ptr = (int*)malloc(sizeof(int) * 10); ...