분류 전체보기
-
단위테스트가 도대체 뭐야 ❓Project 2021. 10. 27. 15:57
단위테스트 하나의 API 기능을 개발하고 수정했을 때, 모든 테스트케이스를 개발자가 직접 수행해서 성공/실패 여부를 판별하는 것은 인적 리소스 낭비일 뿐 아니라 제대로 테스트를 수행하기 힘들다 단위 테스트는 하나의 모듈을 기준으로 독립적으로 수행 되는 최소 단위의 테스트 모듈을 애플리케이션 내의 하나의 기능 / 메서드 / API로 이해하면 특정 메서드에 대한 테스트의 집합이 하나의 단위 테스트가 될 수 있다 스프링/다른 컨테이너로부터 격리된 환경에서 테스트가 가능해야 한다는 목적을 가지고 있다 ❗ 프로젝트 빌드 시 테스트를 통과하지 못하면 배포되지 못하게 하는 용도로 많이 활용된다 단위 테스트 규칙 단위 테스트에서 강조하는 것으로 클린코드에서 언급한 FIRST 규칙이 있다 Fast 테스트는 자주 실행되어..
-
실시간 시스템 구현을 위한 WebSocket의 이해Web 2021. 10. 22. 17:14
WebSocket에 대해 깊이있게 이해하기 위해 Spring 공식 문서를 보면서 다시 공부해봤다. 이번 글에서는 Raw 웹소켓 상호작용을 포함하는 웹소켓 메시징 방식에 대해 알아본다. 다음 글에서는 WebSocket 스택이 지원되지 않는 브라우저에서도 에뮬레이션을 지원하는 SockJS, Pub/Sub 모델 기반의 하위 프로토콜인 STOMP에 대해 다루고자 한다. Introduction to WebSocket 웹 소켓 프로토콜은 단일 TCP 연결을 통해 클라이언트-서버 간 양방향 통신 채널의 설정을 제공한다. HTTP와는 다른 프로토콜이지만 HTTP 위에서 작동할 수 있도록 설계되어 Port 80과 443을 사용하고 기존의 방화벽 규칙을 사용할 수 있다. WebSocket 상호 작용은 HTTP Upgrad..
-
STOMP와 WebSocket으로 아주 간단한 메시징 시스템 만들기Spring 2021. 10. 19. 21:56
Using WebSocket to build an interactive web application 해당 프로젝트는 아래의 링크를 참고하여 구현했습니다. https://spring.io/guides/gs/messaging-stomp-websocket 이 프로젝트는 브라우저-서버 간 메시지를 주고받는 응용프로그램을 작성하는 과정을 안내한다. WebSocket은 TCP위의 계층으로, 하위 프로토콜을 사용해서 메시지를 포함하기 적합하다. 이 미니 프로젝트에서는 Spring과 함께 STOMP 메시징을 사용해서 대화영 웹 애플리케이션을 구현한다. STOMP는 하위 레벨 웹소켓 위에서 동작하는 프로토콜이다. Project Initialize https://start.spring.io/ 에서 위와 같은 설정으로 프로..
-
Thread-Safe: Multi-Thread 환경에서 동시성을 제어하기Programming/Java 2021. 10. 17. 00:19
https://2jinishappy.tistory.com/323 Java에서 Thread를 사용하는 방법 애플리케이션의 구현이 복잡해지면서 CS 기초 특히 트랜잭션, 쓰레드를 제대로 이해해야 겠다고 느꼈다. 그래서 쓰레드의 정의, 자바에서의 쓰레드 사용법, Thread-Safe 구현 방식, Thread-Safe Collection 2jinishappy.tistory.com Thread-Safe Java 환경에서는 개발자가 쉽게 다중의 Thread를 생성하고 사용할 수 있다. 여러 쓰레드의 바이트 코드를 동시에 실행시키는 멀티 쓰레딩은 애플리케이션 성능을 향상시킬 수 있지만, Resource를 공유하기 때문에 안전한 접근 방식이 필요하다. 즉, Multiple Thread를 사용할 때 에는 Thread-S..
-
Spring Dependency Injection의 종류 - Constructor, Setter, FieldSpring 2021. 10. 16. 00:51
Field Dependency Injection(@Autowired) @AutoWired ❓ Spring Framework에서 지원하는 Dependency 정의 용도의 Annotation Spring 종속적이지만 정밀한 Dependency Injection이 필요한 경우 유용함 해당 어노테이션을 사용해 Bean을 등록할 경우 Injection의 대상이 되는 클래스의 형식은 하나여야 한다(하지만 @Qualifier를 이용해 Injection할 Component의 대상을 지정해줄 수 있다) @Service public class Item { @Autowired private final Pizza pizza; @Autowired private final Burger burger; } @Autowired 어노테..
-
Spring에서는 DI를 통해 IoC를 구현한다Spring 2021. 10. 16. 00:47
IoC - Inversion of Control : 객체의 종속성을 다음의 방식을 통해서만 정의하는 방식을 말한다. Spring에서는 Dependency Injection으로 구현되었다. 생성자 인수 팩토리 메서드의 인수 팩토리 메서드에서 생성되거나 반환되어 객체 인스턴스에 설정된 속성 컨테이너는 빈을 생성할 때 의존성을 주입하므로 Compile Time이 아닌 Runtime에 객체 간의 의존 관계가 결정된다. 따라서 객체 간의 관계가 느슨하게 연결된다(loose coupling). org.springframework.beans와 org.springframework.context package는 Spring Framework의 IoC 컨테이너를 담당한다. BeanFactory : 모든 유형의 객체를 관리..
-
동적 웹 페이지를 구현하기 위한 JSP와 ServletWeb 2021. 10. 10. 10:50
👉 서론 학부생 때 수강했던 과목은 많았지만 실제 현업에서의 프로그래밍에 대해 깊이있게 다뤘던 수업은 많지 않았다. 3학년 1학기 때 Model1 구조 기반으로 실습했었는데 그 때는 웹개발이란 원래 그런건 줄 알고 모든 프로젝트를 JSP를 사용해서 jsp 파일 안에 비즈니스 로직을 때려넣었었다... 심지어 4학년 2학기에 스프링을 처음 써봤는데 컨트롤러가 뭔지도 모르고 RequestMapping되는 방식을 몰라서 한참을 헤맸던 기억이 난다 물론 이번년도에 공부했던 것 처럼 JSP, 서블릿, MVC 패턴, Spring, Spring Boot에 대해 왜 이런 기술이 나왔는지 핵심 철학은 무엇인지 차근차근 배웠다면 더 좋았겠지만 오히려 '아 이 땐 이렇게 했었는데 잘못된 방식이었구나'를 느낄 수..
-
POJO(Plain Old Java Object)와 JavaBeanProgramming/Java 2021. 10. 8. 19:00
POJO(Plain Old Java Object) 특정 프레임워크에 종속되지 않은 순수한 자바 객체 속성, 메서드에 대한 어떠한 네이밍 규칙도 없다. Java EE와 같은 무거운 프레임워크들이 서비스 시장을 점유했을 때, 해당 프레임워크에 종속된 (무거운) 객체를 사용해야 했던 것에 반발해서 나오게 된 개념이다. Spring Framework는 POJO를 기본 개념으로 채택했다. public class EmployeePojo { public String firstName; public String lastName; private LocalDate startDate; public EmployeePojo(String firstName, String lastName, LocalDate startDate) { ..