글작성 폼에 내용을 입력하고 '작성'버튼을 누르면
스프링에서 내부적으로 처리되는 로직을 만들어보는 과정이다.
- boardwrite.html
: form태그로 게시글 내용을 전달한다- boardController.java
: post 요청 url을 뷰와 맵핑하고, 필요시 해당 요청을 Service에 전달한다- BoardService.java
: Board 객체를 통해 전달받은 데이터를 DB에서 처리하고 반환하는 비지니스 로직을 구현한다- BoardRepository.java
: JpaRepository를 상속받은 인터페이스로, DB와 관련된 CRUD 요청을 처리한다- board.java
: DB의 테이블과 연동되어, 게시글 데이터를 전달하는 객체이다.
//boardwrite.html
<body>
<div class="layout">
<form action="/board/writepro" method="post" >
<input name="title" type="text">
<textarea name="content"></textarea>
<input type="file" name="file">
<button type="submit">작성</button>
</form>
</div>
</body>
위의 글작성 폼에서 내용을 입력하고 작성버튼을 누르면 form 태그 안의 action속성에서 지정한 "/board/writepro"로 입력내용들이 전달된다. 그리고 이를 아래 Controller에서 받아서 처리한다
//boardController.java
@Controller
public class boardController {
@Autowired
private BoardService boardService;
@PostMapping("/board/writepro")
public String boardWritePro(Board board){
boardService.write(board);
return "";
}
}를 입력하세요
보통 데이터를 게시할 때 사용한다.
메소드에 주어진 URI 표현식(/board/writepro)과 일치하는 HTTP POST 요청을 처리한다.
의존성 주입을 위해 사용하는 어노테이션.
스프링이 관리하는 Bean을 찾아서 자동으로 매핑해준다.
//BoardService.java
@Service
public class BoardService {
@Autowired
private BoardRepository boardRepository;
public void write(Board board){
boardRepository.save(board);
}
}
스프링에 Bean 객체로 등록해주는 어노테이션
보통 비지니스 로직이나 repository layer를 호출하는 함수에 사용한다
//BoardRepository.java
@Repository
public interface BoardRepository extends JpaRepository<Board, Integer> {
}
스프링에 Bean 객체로 등록해주는 어노테이션.
JpaRepository를 상속받아 기본적인 Create, Read, Update, Delete 가 자동으로 생성된다.
//board.java
@Entity //데이터베이스 테이블과 연동해주는 어노테이션
@Data //변수에 getter, setter 자동생성해주는 어노테이션
public class Board {
@Id //기본키로 지정하는 어노테이션
@GeneratedValue(strategy = GenerationType.IDENTITY) //MariaDB에서는 GenerationType.IDENTITY 사용
private Integer id;
private String title;
private String content;
}
기본키 생성전략 어노테이션으로, IDENTITY타입의 경우 기본키 생성을 DB에 위임한다
[출처] 위 내용은 한코딩님의 강의를 보고 정리한 내용입니다