코프링

[토비의 스프링 3.1] 2장 테스트
테스트란 무엇인가? 애플리케이션이 복잡해질 수록 변경을 어떻게 대응할지 전략을 짜는게 매우 중요해집니다. 이전 챕터에서는 변경에 조금 더 쉽게 대응할 수 있도록하는 객체지향 설계의 중요성과 그 방법에 대해 다루었는데요. 이번 챕터에서는 테스트 기술에 대해서 다루려고 합니다. 테스트는 왜 필요할까요? 만들어진 코드에 확신을 가질 수 있게 해줍니다. 변화에 유연하게 대처할 수 있는 자신감을 갖게 해줍니다. 테스트가 잘 구성되어 있다면 기존 코드에 변경이 발생하더라도 기존 기능이 여전히 잘 동작하는지 쉽게 검증할 수 있습니다. 그럼 테스트는 어떻게 해야 좋을까요? 테스트 설계 내 계좌에서 다른 사람에게 돈을 보내는 송금 서비스가 있다고 생각 해보겠습니다. 실제로는 이것보다 훨씬 복잡한 아키텍처를 가지겠지만 간..

[토비의 스프링 3.1] 1장 오브젝트와 의존관계
Reflection, Default Constructor Reflection을 이용해 오브젝트를 생성하기 때문에 Default Constructor가 필요하다고 이야기 함. 코드가 어떤식으로 작성되기 때문에 그런걸까? val someClass = SomeClass::class.java val constructors = someClass.getDeclaredConstructor() constructors.isAccessible = true val instance = constructors.newInstance() Class에 대한 Reference 획득 → 해당 Class의 생성자 획득 → 생성자를 사용할 수 있게끔 접근 지정자 public 으로 변경 → 생성자를 이용해 인스턴스 생성 이와 같이 Defau..

SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (3)
목차 SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (1) SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (2) SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (3) - 현재 게시글 이제 만들어둔 서버와 통신한 클라이언트를 만들어볼 차례다. 개략적으론 SocketJS와 STOMP Client를 이용해 통신하고, vue/bootstrap/freemarker로 화면을 그릴 예정이다. 1. 의존성 추가 dependencies { implementation("org.webjars.bower:bootstrap:4.3.1") implementation("org.webjars.bower:vue:2.5.16") implementation("org.webjars.bower:ax..

SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (2)
목차 SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (1) SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (2) - 현재 게시글 SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (3) springboot-web 관련 의존성은 추가되어있다는 것을 가정으로 글을 작성하니 참고 부탁드립니다. 1. 채팅방 관리를 위한 Entity 및 Component 추가 여기선 Repository에 별도 DataSource를 연결하지 않고 memory 상에 Map으로 관리해주었다. // ChatRoom.kt data class ChatRoom( val name: String ) { val id: String get() = "room_$name" } // ChatRoomRepositor..

SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (1)
목차 SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (1) - 현재 게시글 SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (2) SpringBoot에서 STOMP로 채팅 애플리케이션 만들기 (3) 이번에 사이드 프로젝트를 진행하면서 채팅 기능을 구현하게 됐다. 관련하여 공부해본 내용을 작성해본다. 채팅이라고 하면 일반적으로 아래와 같은 프로세스로 통신 하게 된다. 이 때 클라이언트와 서버는 HTTP 통신이 아닌, 소켓 통신을 하게 된다. Why? 클라이언트와 서버간 연결을 수립해두고, 해당 경로를 통해 통신하기 위함이다. HTTP 통신은 한번 연결 수립 후 응답이 오게 되면 연결이 끊기게 된다. 클라이언트A와 서버가 연결되고, 클라이언트B와 서버가 연결된 상태에서 클라이언트A..