GET // 매개변수 없는 GET 메서드 @GetMapping("/members") public String list() { return "members/memberList"; } // 매개변수 있는 GET 메서드 @GetMapping("/members/{variable}") public String list(@PathVariable String variable) { return variable; } // 매개변수 있는 GET 메서드 @GetMapping("/members") public String list(@RequestParam String variable) { return variable; } @GetMapping: HTTP GET 요청을 해당 메소드에 매핑하는 역할 @PathVariable: U..
도메인: 비즈니스 도메인 객체 리포지토리: 데이터베이스 접근, 도메인 객체를 DB에 저장하고 관리 서비스: 비지니스 로직 구현 Domain package hello.hellospring.domain; import jakarta.persistence.*; @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void..
정적 컨텐츠 클라이언트의 요청을 받고 서버에 미리 저장된 HTML, CSS, JS 등의 파일을 그대로 보여준다. 스프링부트 서버는 요청이 들어오면 (1)controller 다음으로 (2)resources를 찾는다. MVC와 템플릿 엔진 웹브라우저에서 요청이 들어올 경우 Controller에서 지정된 응답을 한다. 요청에 해당되는 파일을 'viewResolver'를 통해 동작시킨다. 템플릿 엔진은 API 방식과다르게 html 파일을 직접 응답하는 방식이다. 이때 thymeleaf는 템플릿 엔진 중 하나로, MVC중 View에 해당되는 기술이다. 페이지에 동적을 값을 추가하거나 처리한다. API html파일이 아닌 데이터(json)로 응답한다. 아래와 같이 'return 객체'의 형식의 경우 객체를 json..
인터셉터란? Spring이 제공하는 기술로 디스패처 서블릿이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능 제공 메소드 preHandle() : 컨트롤러가 호출되기 전에 실행 postHandle() : 컨트롤러 호출 후에 실행 afterCompletion() : 모든 작업이 완료된 후에 실행 ChannelInterceptor Interface for interceptors that are able to view and/or modify the Messages being sent-to and/or received-from a MessageChannel. 메세지 채널로부터 전송되거나 수신된 메세지를 볼 수 있고 또는 수정할 수 있는 인터셉터를 위한 인터페이스 일반적으로 전송 및..
JUnit 자바 언어에서 사용되는 대표적인 테스트 프레임워크로서 단위 테스트를 위한 도구를 제공 어노테이션 기반의 테스트 방식 지원 단정문(assert)을 통해 테스트 케이스의 기댓값이 정상적으로 도출됐는지 검토 가능 세부 모듈 JUnit Platform: JVM에서 테스트를 시작하기 위한 뼈대로 테스트 발견과 수행, 결과 보고 역할 수행 JUnit Jupiter: JUnit 5에서 제공하는 Jupiter 기반의 테스트를 실행하기 위한 테스트 엔진을 가지고 있음 JUnit Vintage: JUnit 3,4에 대한 테스트 엔진 API 테스트 생명주기 @Test: 테스트 코드를 포함한 메서드 정의 @BeforeAll: 테스트를 시작하기 전에 호출되는 메서드 정의 @BeforeEach: 각 테스트 메서드가 실..
Dto는 Controller, View, Model 등에서 사용되는 클래스이고, Entity는 말 그대로 엔티티, 즉 DB에 더 가깝게 쓰이는 클래스이다. 실제 DB에 저장될 때는 Entity 클래스가 사용된다고 이해하고 있다. 해당 코드는 사용자가 보낸 채팅을 저장하는 서비스 로직이다. 그래서 혼란스러운 지점이 무엇인가하면... 받아온 chatRoomId를 통해 chatRoomEntity를 찾는다. 그리고 해당 엔티티를 chatMessageRequestDto에 set 해준다. 어라랏? set하는 부분에서 혼란스러웠던건데... 갑자기 이해가 확 됐다. 해당 코드는 아래의 블로그를 참고하여 작성하였습니다. https://velog.io/@sihoon_cho/2.SpringBoot-WebSocket-STOM..
이전에 Config 파일과, Handler 파일을 작성해서 웹소켓 사용 설정을 마쳤다. https://dogandbird.tistory.com/93 이제 본격적으로 웹소켓을 사용해 채팅 구현을 하려고 하는데 STOMP에 대해서 알게 되었다. Websocket만 이용할 경우는 발신자와 수신자에 대한 연결 정보를 직접 관리해야 한다. 또한 사용자들을 해두고 클라이언트에서 다른 클라이언트로 전달하는 코드 또한 직접 구현해야 한다. 하지만 STOMP를 이용한다면 위와 같은 복잡성을 해결할 수 있다. STOMP STOMP는 Simple Text Oriented Messaging Protocol의 약자로 기존 WebSocket 통신 방식을 좀 더 효율적으로 쉽게 다룰 수 있게 해주는 프로토콜이다. STOMP는 Pu..
채팅 구현에 앞서 기존 작성된 ERD를 그대로 적용하면 되는지 고민을 해봤다. 하지만 중요한 sender(발신자) 속성이 빠져있어 수정을 해보았다. 중간에 식별 관계, 비식별 관계를 고르는 탭이 나오는데 비식별을 선택하였다. 채팅방과 채팅참여 테이블, 메세지 테이블 이렇게 세개의 엔티티로 구성된다. 채팅방, 채팅참여 테이블을 합치는게 좋을까 고민했지만 작성된 상태로 두는게 맞을거 같아서 위와 같이 진행하려고 한다! 24.02.13 ver. 엔티티 작성을 하다가 ERD 수정하고 다시 엔티티 작성하다가 또 ERD를 수정하는 과정을 거쳐 어느정도 정리가 되었다. 테이블 간 관계를 변경하였고, 메세지 ID 등을 추가하였다. Chat 사용자와 채팅방의 연관 관계를 저장한다. 두 ID를 FK로 받아오고 두 개의 키..
- Total
- Today
- Yesterday
- 인프런 김영한 강의
- 백준 1004
- 13305 자바
- 아이엘츠
- 알고리즘
- 스프링부트
- 스프링 강의
- 자바
- 동덕여대
- BFS
- 안드로이드
- 동덕여대 컴퓨터학과
- 컴과
- 자바 9375
- 개발
- 프로그래밍
- 스파크
- 웹
- 생활코딩
- 컴공
- 자바 1004번
- 백준
- 코틀린
- 스프링부터
- 그리디 알고리즘
- 컴퓨터학과
- 코딩
- RDD
- 백준9375번
- 백준 2108
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |