[SpringBoot] 8.6 Processing of writing text
Service Package 만들기
1. package 파일 만들어주기
board > src > main > java > com.study.board > new > Package
패키지 이름 적어주기 service로 적어주면 된다.
이렇게 파일이 잘 만들어진 것을 알 수 있다.
2. service package에도 Java Class 파일 만들어주기
BoardService라고 적어주면 된다.
잘 만들어진 걸 확인할 수 있다.
3. 어노테이션을 사용해서, 여기가 Service 라는 것을 스프링부트에게 알려주기
4. 안에 write() 매소드 생성해주기
5. private BoardRepository boardRepository; 라고 선언해주기
6. @Autowired 적어주기
원래 자바 같은 경우에는 객체를 생성해줄 때,
private BoardRepository boardRepository = new BoardRepository 이런 식으로 생성한다.
그런데 springboot의 Autowired라는 annotation을 사용하면
springbean이 알아서 읽어와서 private BoardRepository에 주입을 해준다.
이게 바로 dependency injection이다.
7. 코드 추가로 더 적어주기
public void write(Board board)
Board라는 클래스의 board라는 변수로 받아준다.
그리고 boardRepository.save(board) 이렇게 넣어준다.
package com.study.board.service;
import com.study.board.entity.Board;
import com.study.board.repository.BoardRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BoardService {
@Autowired
private BoardRepository boardRepository;
public void write(Board board){
boardRepository.save(board);
}
}
Service를 어디에서 이용하냐. 다시 컨트롤러에서 이용하면 된다.
PostMapping으로 넘어왔을 때, data가 Board board에 담아져서 들어온다
일단 System.out.println(board.getTitle());은 지워주고,
아래와 같이 다시 적어준다.
그러면 boardService.write(); 이렇게 해서 넘겨주면 된다.
write()는 아까 Service에서 만든 매소드 이름이다.
여기에 board 변수 담아주기
Controller의 입장에서는 boardService라는 것이 어떤 건지 모르기 때문에
여기 또 주입을 해줘야한다.
package com.study.board.controller;
import com.study.board.entity.Board;
import com.study.board.repository.BoardRepository;
import com.study.board.service.BoardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class BoardController {
@Autowired
private BoardService boardService;
@GetMapping("/board/write")
public String boardWriteForm(){
return "boardwrite";
}
@PostMapping("/board/writepro")
public String boardWritePro(Board board) {
System.out.println(board.getTitle());
return "";
}
}