WEB/SpringBoot

[SpringBoot] 8.6 Processing of writing text _ DB와의 연결을 위한/ Service Package 만들기 / Dependency Injection

bay07 2024. 3. 9. 08:01

[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 "";

    }

}

 

 

 

Ch8.6_ board.zip
0.14MB