오늘 공부한 내용 스프링 부트 게시판 만들기 (회원 컨트롤러 개발) @RequestBody에서 record클래스를 사용 가능한 이유에 대해서 공부 ObjectMapper의 작동원리에 대해서 공부 제네릭의 변성과 타입 이레이저에 대해서 공부 💭느낀 점 & 배운 점 오늘은 제네릭을 공부하는데 거의 모든 시간을 쏟았던 것 같다. 어제 자기 전에 채팅방에서 수퍼타입토큰이란 얘기가 나와서 이를 찾아보던 중, 타입이레이저 등의 모르는 용어가 산더미처럼 쏟아져 나왔기에..ㅠㅠ 제네릭 언제 한번 정리해야지 하고 있었는데 그게 오늘이었던 것 같다. 하지만 지금 공변 공부하다가 머리가 터져버렸고, 아직 수퍼타입토큰은 건드리지도 못하겠다. 그래서 조금 현타가 온달까. 내일은 바쁘고 이번주 내로 수퍼타입토큰에 대해서도 한번 ..
이제 회원 서비스 마지막입니다! 컨트롤러를 개발하여, Http 요청에 대해 데이터를 반환할 수 있도록 컨트롤러를 작성해 보겠습니다. 시큐리티를 이용한 JSON 데이터로 로그인 (완료) JWT를 이용한 인증 (완료) 도메인, 테이블 설계, 엔티티 생성 (완료) 댓글 삭제 로직 구현 (완료) 회원가입 + 정보수정 등 회원 서비스 구현 (진행 중) 게시판 서비스 구현 댓글 서비스 구현 (1댓글 -> *(무한) 대댓글 구조) 예외 처리 예외 메세지 국제화 카테고리별 게시판 분류 게시글 페이징 동적인 검색 조건을 사용한 검색 사용자 간 쪽지 기능 무한 쪽지 스크롤 게시물 & 댓글에 대한 알람 쪽지에 대한 알람 접속한 사용자 간 실시간 채팅 회원가입 시 검증(예: XX대학교 XX과가 아니면 가입할 수 없게) Swa..
🧐 제네릭(Generic)이란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시에 타입 체크를 해주는 기능입니다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환을 하는 번거로움이 줄어듭니다. 😠 제네릭이 없었을 때의 문제점 예를 하나 들어보겠습니다. List list = new ArrayList(); list.add(1); int a = list.iterator().next(); //컴파일 에러 제네릭을 사용하지 않고 List만을 사용하여 작성한 코드입니다. 컴파일러는 마지막 라인에 대해서 에러를 발생시킬 것입니다. 제네릭을 사용하기 이전 List는 Object를 사용하여 모든 타입의 객체를 받아들일 수 있게 설계되었습니다. 따라서 해당 값을 사용하기 위..
오늘 공부한 내용 스프링 부트 게시판 만들기 (테이블, 도메인 설계, 엔티티 생성, 댓글 삭제 로직 구현, 회원 서비스 개발) 💭느낀 점 & 배운 점 오늘은 지금까지 계속 하다 중간에 끝나버렸던 댓글 삭제 로직을 작성해보았다. 사실 지금까지 친구들이랑 프로젝트 형식으로 하면서 하려고 했었는데, 계속 중간에 파토가 나버려서... 결국 지금까지 못하고 있다가 오늘에서야 드디어 했다. 생각보다 힘들었고, 거의 오늘 하루종일 다 쏟아부었다. 특이 오늘 조금 중요한 정보를 하나 얻었다. 프록시로 생성된 빈을 사용할 때, 필드에 직접 접근하면 null값이 나온다는 것이다. 무조건 메소드를 통해서만 값을 가져와야 한다. 오늘 이 문제때문에 정말 너무 많은 시간을 뺐겼다. 그래도 또 하나 배운거니까 좋다 ㅎ 추가로 오..
시큐리티를 이용한 JSON 데이터로 로그인 (완료) JWT를 이용한 인증 (완료) 도메인, 테이블 설계, 엔티티 생성 (완료) 댓글 삭제 로직 구현 (완료) 회원가입 + 정보수정 등 회원 서비스 구현 (진행 중) 게시판 서비스 구현 댓글 서비스 구현 (1댓글 -> *(무한) 대댓글 구조) 예외 처리 예외 메세지 국제화 카테고리별 게시판 분류 게시글 페이징 동적인 검색 조건을 사용한 검색 사용자 간 쪽지 기능 무한 쪽지 스크롤 게시물 & 댓글에 대한 알람 쪽지에 대한 알람 접속한 사용자 간 실시간 채팅 회원가입 시 검증(예: XX대학교 XX과가 아니면 가입할 수 없게) Swagger를 사용한 API 문서 만들기 신고 & 블랙리스트 기능 AOP를 통한 로그 어드민 페이지 캐시 배포 (+ 무중단 배포) 배포 ..
사실 순서상으로는 회원 -> 게시판 -> 댓글 순서로 구현하는게 맞으나, 제가 너무 댓글을 구현해보고 싶은 마음이 커서 댓글부터 구현하도록 하겠습니다. 다른거 구현하고 오셔서 봐도 괜찮습니다. 시큐리티를 이용한 JSON 데이터로 로그인 (완료) JWT를 이용한 인증 (완료) 도메인, 테이블 설계, 엔티티 생성 (완료) 댓글 삭제 로직 구현 (진행 중) 회원가입 + 정보수정 등 회원 서비스 구현 게시판 서비스 구현 댓글 서비스 구현 (1댓글 -> *(무한) 대댓글 구조) 예외 처리 예외 메세지 국제화 카테고리별 게시판 분류 게시글 페이징 동적인 검색 조건을 사용한 검색 사용자 간 쪽지 기능 무한 쪽지 스크롤 게시물 & 댓글에 대한 알람 쪽지에 대한 알람 접속한 사용자 간 실시간 채팅 회원가입 시 검증(예:..
JPA 구현체로 하이버네이트를 쓰신다면 주의해야 할 점이 있습니다. 코드를 보며 살펴보겠습니다. 문제가 되는 상황을 간략한 코드로 나타내어 보겠습니다. @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @Table(name = "member") public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; public void set..
회원가입은, 도메인 설계가 끝나고 이후 회원 서비스를 구현할 때 구현하도록 하겠습니다! 시큐리티를 이용한 JSON 데이터로 로그인 (완료) JWT를 이용한 인증 (완료) 도메인, 테이블 설계, 엔티티 생성 (진행 중) 댓글 삭제 로직 구현 회원가입 + 정보수정 등 회원 서비스 구현 게시판 서비스 구현 댓글 서비스 구현 (1댓글 -> *(무한) 대댓글 구조) 예외 처리 예외 메세지 국제화 카테고리별 게시판 분류 게시글 페이징 동적인 검색 조건을 사용한 검색 사용자 간 쪽지 기능 무한 쪽지 스크롤 게시물 & 댓글에 대한 알람 쪽지에 대한 알람 접속한 사용자 간 실시간 채팅 회원가입 시 검증(예: XX대학교 XX과가 아니면 가입할 수 없게) Swagger를 사용한 API 문서 만들기 신고 & 블랙리스트 기능 ..