본문 바로가기
Spring

2022-11-23 스프링 board패키지 리뷰

by HTT 2022. 11. 24.

- 이번엔 board패키지를 리뷰해볼 건데 전 게시글과 비교적 간략하게 작성해볼 것이다.

 

 

 

 

main 메소드

 

 

1. 회원 등록하기

앞에서 했던 내용이므로 간략하게 설명

public static void main(String[] args) {
	//회원이 등록돼야 하므로 - db연동이 됐으면 안 해도 되는 작업
	CustomerService customerservice = new CustomerServiceImpl();
	CustomerDTO customer = new CustomerDTO("jang", "1234", "장동건", "VVIP"); //생성자
	customerservice.register(customer);
}

=> register() 메소드 사용하기 위해 객체를 생성해주고 생성자를 이용해 데이터를 입력한다. 입력한 데이터를 담아 register() 메소드를 호출해 넘겨준다. add() 메소드를 호출하며 넘겨받은 데이터를 다시 넘겨주고, add() 메소드에서는Map의 put() 메소드를 이용해 넘겨받은 데이터를 입력해주면 회원등록이 완료된다.

 

 

 

2. 후기남기고 포인트 적립하기

package board;
import customer.CustomerDTO;
import customer.CustomerService;
import customer.CustomerServiceImpl;

public class Client {

	public static void main(String[] args) {
		//회원이 등록돼야 하므로 - db연동이 됐으면 안 해도 되는 작업
		CustomerService customerservice = new CustomerServiceImpl(); 
		CustomerDTO customer = new CustomerDTO("jang", "1234", "장동건", "VVIP"); //생성자
		customerservice.register(customer);
        
		//후기를 남기기 위한 작업
		BoardService boardservice = new BoardServiceImpl();
		BoardDTO board = new BoardDTO("jang", "ㄱㅊ", "ㄱㅊ");  //생성자
		boardservice.insertBoard(board);
	}

}

=> insertBoard메소드 사용하기 위해 객체를 만들어준다(회원정보 받아와서 서비스를 처리하는 클래스). 생성자를 이용해 정보를 입력하고 이 정보를 담아 insertBoard() 메소드를 호출한다.

 

 

 

 

ServiceImpl

 

package board;
import customer.CustomerDAO;
import customer.CustomerDTO;
import customer.MybatisCustomerDAO;

// 회원정보 받아와서 서비스를 처리하는 메소드
public class BoardServiceImpl implements BoardService{
	CustomerDAO dao = new MybatisCustomerDAO(); 
	AbstractPoint pointobj = new OtherPointImpl();
			
	@Override
	public void insertBoard(BoardDTO board) { 
		CustomerDTO user = dao.getUser(board.getId());
		//출력
		System.out.println(board);  
		//포인트저장하기
		int point = pointobj.savePoint(user); 
		System.out.println("저장된 포인트:"+point);
	}
	
}

=> 우선 회원의 정보를 조회해서 가져오는 getUser()와 포인트를 적립해주는 savePoint() 메소드를 사용하기 위해 객체를 생성해준다. main메소드에서 넘겨받은 객체의 주소를 가지고 포인트를 적립할 회원의 정보를 가져온다.

board.getId() → "jang ----------> dao.getUser("jang")

id변수에 담긴 "jang"과 일치하는 key를 찾아서 "jang"의 데이터(value)를 가져옴

getUser메소드의 리턴타입이 CustomerDTO이기 때문에 역시나 동일한 타입의 변수로 리턴값을 받아줘야 한다.

"jang", "1234", "장동건", "VVIP"

 

Map에서 찾아온 "jang"의 모든 데이터가 CustomerDTO타입의 변수인 'user'에 담겼다. 이제 이 정보를 이용해 포인트적립을 해보자.

=> "jang"의 데이터를 가지고 포인트를 처리할 메소드인 savePoint()를 호출한다.

 

 

 

 

PointImpl

 

package board;
import customer.CustomerDTO;

//포인트 적립하는 메소드
public class OtherPointImpl implements AbstractPoint{
	@Override
	public int savePoint(CustomerDTO customer) {
		int point = 0;
		if(customer.getState().equals("VVIP")) {
			point = 2000;
		}else {
			point = 1000;
		}
		return point;
	}

}

=> customer라는 이름의 매개변수로 "jang"의 데이터가 저장되어 있는 객체의 주소를 받아주고 메소드를 실행한다. 사용자가 입력한 회원의 "state"가 "VVIP"라면 2000포인트를 적립하고 그렇지 않으면 1000포인트를 적립해주는 메소드이다. "jang"의 데이터는 "VVIP"와 일치하므로 2000포인트를 리턴한다.

savePoint() 메소드를 호출했던 곳으로 돌아와(BoardServiceImpl클래스) 리턴받은 포인트 값을 출력해준다.

 

 

 

- 출력 결과

MyBatis에 저장하기==============================
MyBatis에 조회하기==============================
BoardDTO [id=jang, title=ㄱㅊ, state=ㄱㅊ]
저장된 포인트:2000

 

 

 

 

****************************************************************************************************************

처음해보는 스프링 mvc 리뷰 후기

 

계속 해왔던 oop내용인데 갑자기 인터페이스가 끼고 구현, 스프링, 상속의 상속의 상속... 조금 많아진 이유로 머리가 복잡해졌다.. 바로바로 이해가 되지 않으면 항상 노트에 먼저 정리부터 하고 그림부터 그린 후에 다시 풀어내보자!!!

이것도 크게 보면 main, BoardServiceImpl, OtherPointImpl 이 세 가지 메소드만 이용하면 되는데 각자의 조상이 있기 때문에 괜히 조상도 다시 봐야할 것 같고 그랬다. 하지만 추상클래스가 존재하지 않는 이상 그럴 필요가 전혀 없다! 집중집중집중!!!!집중하자!!!!!!! 중요한 핵심파악이 중요.

댓글