서비스 클래스 만들고 글쓰기 만듬
package shop.mtcoding.blog.board;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import shop.mtcoding.blog.user.User;
@RequiredArgsConstructor
@Service // IoC 에 등록된다.
public class BoardService {
private final BoardJAPRepository boardJAPRepository;
@Transactional
public void save(BoardRequest.SaveDTO requestDTO, User sessionUser) {
boardJAPRepository.save(requestDTO.toEntity(sessionUser));
}
}
컨트롤러 작성
의존성 주입하고 세이브 바꿈
private final BoardRepository boardRepository;
private final BoardJAPRepository boardJAPRepository;
private final BoardService boardService;
private final HttpSession session;
@PostMapping("/board/save")
public String save(BoardRequest.SaveDTO requestDTO) {
User sessionUser = (User) session.getAttribute("sessionUser");
boardService.save(requestDTO, sessionUser);
return "redirect:/";
}
글 수정 서비스
@Transactional
public void update(int boardId, int sessionUserId, BoardRequest.UpdateDTO requestDTO) {
// 조회 및 예외처리
Board board = boardJAPRepository.findById(boardId).orElseThrow(()
-> new Exception404("게시글을 찾을 수 없습니다."));
// 권한 처리
if (sessionUserId != board.getUser().getId()) {
throw new Exception403("게시글을 수정할 권한이 없습니다.");
}
// 글수정
board.setTitle(requestDTO.getTitle());
board.setContent(requestDTO.getContent());
} // 더티체킹
글 수정 컨트롤러
@PostMapping("/board/{id}/update")
public String findById(@PathVariable Integer id, BoardRequest.UpdateDTO requestDTO) {
User sessionUser = (User) session.getAttribute("sessionUser");
boardService.update(id, sessionUser.getId(), requestDTO);
return "redirect:/board/" + id;
}
글수정폼(글 수정 화면 이동) 서비스
public Board updateForm(int boardId, int sessionUserId) {
// 조회 및 예외처리
Board board = boardJAPRepository.findById(boardId).orElseThrow(()
-> new Exception404("게시글을 찾을 수 없습니다."));
// 권한 처리
if (sessionUserId != board.getUser().getId()) {
throw new Exception403("게시글 수정페이지로 이동할 권한이 없습니다.");
}
return board;
}
컨트롤러
@GetMapping("/board/{id}/update-form")
public String update(@PathVariable(name = "id") Integer id, HttpServletRequest request) {
User sessionUser = (User) session.getAttribute("sessionUser");
Board board = boardService.updateForm(id, sessionUser.getId());
request.setAttribute("board", board);
return "board/update-form";
}