스프링

1. 개요 이번 포스팅에서는 생성자를 편하게 만들어주는 생성자에 대해 알아볼 것이다. 이전 포스팅에서 DI에 대해 알아보면서 장점이 많은 생성자 주입을 사용하는 게 좋다는 것을 알았다. 이 생성자를 내가 직접 만들 수도 있지만 Lombok에서는 어노테이션으로 지원을 해준다. @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 이 세 개의 어노테이션이 각각 어떤 차이점을 가지고 어떤 상황에 사용해야 하는지 궁금해서 찾아봤고 정리해보려고 한다. https://projectlombok.org/features/constructor @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor..
1-1 의존성이란? 의존성이란 흔히 A가 B를 의존하는 것을 말한다. 즉 클래스 A가 클래스 B의 메서드를 호출하거나 클래스 B의 객체를 생성하여 사용하는 경우 A는 B에 의존성을 가지고있다 라고 한다. 2. 의존성 주입(DEpendency Injection)이란? DI(Dependency Injection)란 의존성 주입, 의존 관계 주입 이라고 불리며, 객체 내부에서 직접 호출하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식이다. 의존성 주입을 함으로써 객체 간 유연성이 높아지 결합도를 낮출 수 있다. 코드로 한번 살펴보자 아래의 코드는 Cafe클래스와 Americano클래스의 의존성이 높은 코드이다. 의존성이 높은 이유는 1. 객체 생성의 책임 > Americano객체의 내부 구..
이번 포스팅에서는 게시글 기능을 구현 할 것이다. 게시글 삭제 기능은 먼저 삭제하고 싶은 게시글이 로그인한 사용자가 작성한 게시글인지 본인 확인이 필요하다. 본인 확인이 되면 삭제 버튼을 누름으로써 delete로직이 실행된다. 다른 포스팅에서는 HTML폼이 있었지만 삭제에서는 버튼을 누르면 delete로직이 있는 url로 바로 매핑을 해놨기 때문에 HTML코드는 게시글 상세보기 포스팅을 참고하면 될 것 같다 1. postController.java 현재 로그인 한 사용자와 게시글의 작성자가 다를 때는 게시글 삭제 버튼을 누르면 해당 게시글의 작성자가 아닙니다 라며 알람을 띄우게 된다. 사용자와 작성자가 같으면 삭제 로직을 실행 후 게시글을 삭제했다고 알람을 띄운다. @PostMapping("/delete..
이번 포스팅에서는 게시판에 올린 글을 수정 기능을 구현 할 것이다. 글 수정 기능은 먼저 수정하고 싶은 게시글이 로그인한 사용자가 작성한 게시글인지 본인 확인이 필요하다. 내부단에서 게시글 작성자인지 확인 후 작성자이면 수정을 아니면 에러메세지를 출력할 수 있도록 만들것이다. 1. postupdate.html 글 작성 폼이랑 동일하게 구성했다. 버튼의 하이퍼 링크정도 변경해줬다. 게시글 수정 제목 내용 수정 취소 2. postController.java 현재 로그인 한 사용자와 게시글의 작성자가 다를 때는 게시글을 수정하려면 이전에 썼던 제목과 본문을 불러와야 하기 때문에 해당 게시글의 boardId를 사용해서 게시글의 정보를 불러와 model 객체로 폼에 보내준다. @GetMapping("/update..
이번에는 작성한 작성한 게시글의 상세보기 페이지를 만들어 볼것이다. /freeboard에서 게시글 목록이 나오면 그 중 하나의 제목을 클릭하면 /freeboard/detail/{boardId}로 이동하고 그 글의 제목, 내용, 작성자 작성일 등 여러가지 상세 정보를 readonly로 보여주려고 한다. 1. freeboard.html freeboard.html을 다시 한번 보는 이유는 상세보기를 누를 때 해당 게시글의 boardId가 필요하기 때문이다. 게시글의 목록에서 제목에 하이퍼링크로 /freeboard/detail/{boardId}를 보낸다. URL에 boardId를 보내서 boardId로 해당 글에 대한 정보를 찾을 수 있도록 했다. 2. PostController.java @PathVariabl..
이번에는 작성한 게시글을 작성하는 페이지를 만들어 볼것이다. /posting으로 접속하게 되면 로그인한 사용자에 한해서 글을 작성할 수 있도록 글 작성 폼을 로드한다. 1. freeboard.html /freeboard/posting URL로 POST방식으로 제목, 내용을 postDTO에 담아 보내주고 이전 포스팅에서 말했듯이 작성시간과 수정시간은 자동으로 Auditing을 통해 들어간다! 게시글 등록 제목 내용 작성 취소 2. PostController.java 만약 아무거도 안쓰고 눌렀을 때를 대비하여 Validated를 활용하여 title이나 content에 값이 없을 때에는 예외를 발생시켜 글 작성이 안되도록 했다. 그리고 현재 로그인 한 아이디, 즉 로그인한 userId에 데이터베이스 연관관계를..
이번에는 작성한 게시글의 전체 목록을 출력하는 페이지를 만들어 볼것이다. /freeboard로 접속하게 되면 게시판 페이지에 모든 사용자들이 작성한 글을 출력하려고 한다. 1. freeboard.html 헤더부분은 이전 포스팅과 같이 네비바를 붙혀줬다. 게시판 기본 페이지에 사용자들이 작성한 글을 출력하고싶기 때문에 타임리프의 each를 사용해서 다음에 볼 controller에서 list라는 model객체로 보낸 Post객체 즉 게시글에 대한 정보가 담긴 Post객체를 list라는 변수로 모든 글 목록을 출력해줬다. 단 작성일은 Datetime 타입으로 DB에 들어가 있기 때문에 이쁜 모양으로 출력해주기 위해 포맷팅해줬다! 자유게시판 글 작성 글번호 작성자 제목 작성일 2. Post.java & Base..
이번 포스팅에서는 스프링 시큐리티를 활용한 로그인을 하는 방법에 대해 포스팅 할 것이다. 로그인을 하는 과정에는 인가와 인증이라는 절차가 생기는데 이 둘의 차이부터 간단하게 알아보자 인증이란? (Authentication) - 사용자가 누구인지 신원을 확인하는 절차를 말한다. 쉽게 비유하자면 내가 주민등록증과 같은 정부 문서를 받고 싶을 때 나의 신원을 확인하는 과정이라고 생각하면 쉬울 것 같다. 내가 진짜 나라는 것을 증명하는 것을 말한다. 웹에서는 ID와 Password를 활용하여 로그인 하는 것이 대표적인 인증이다. 인가란? (Authorization) - 어떤 개체가 어떤 리소스에 접근할 수 있는지 어떤 동작을 수행할 수 있는 권한이 있는지를 확인하는 과정이다. 쉽게 비유하자면 내가 체육관에서 운..
토이프로젝트를 진행하던 중 get방식으로 글작성하는 페이지를 랜더링 하던 중 에러가 발생했다. 여러가지 에러중에 타임리프 경로에 관한 에러도 있었기 때문에 경로를 올바르게 변경해줘도 오류가 떠서 구글링을 해봤다. 현재 내 Posting Form의 html 코드와 PostController코드이다. 작성 controller의 /freeboard/posting 경로로 들어오는 post방식의 값을 postDTO로 전송하고있다. @GetMapping("/posting") public String getBoardWrite() { return "board/postwrite"; } 나는 단지 페이지를 랜더링하기 때문에 아무거도 안보내줘도 되고 해당 form에 대한 html코드가 있는 경로만 잘 매칭시켜주면 된다고 생..
목표 1. 회원가입 페이지에서 필요 정보를 입력한다 (이름, 별명, 아이디, 비밀번호). 2. 별명과 아이디는 Unique값이기 때문에 입력과 동시에 중복체크를 하여 사용자에게 보여준다. 3. 입력 후 가입하기 버튼을 입력하면 비밀번호를 암호화 하여 데이터베이스에 저장한다. 4. 회원가입이 정상적으로 됐으면 메인페이지로 이동하고 실패하면 다시 회원가입 페이지로 돌아가서 오류를 출력한다. Version Spring boots : 3.1.4 java : 17 Database : H2 gradle 코드 및 설명 1. Database - h2 먼저 회원을 저장 할 데이터베이스가 필요하기 Member라는 table을 만들었다. 내가 저장할 정보는 유저 고유 번호, 이름, 별명, 아이디, 비밀번호이다. Long타입..
보글보글소다
'스프링' 태그의 글 목록 (2 Page)