Java 수업일지 Day02. :: 누군가는 말했어, 개발자는 이름짓는데 시간을 많이 쓴다고 ::

linvi·2023년 1월 10일

java 공부일지

목록 보기
2/10
post-thumbnail

오타와 오타... 오타와의 전쟁

강사님의 수업으로 진행되는,서비스와 컨트롤러의 구분

컨트롤러는 일종의 안내데스크, 서비스는 그 실제로 구현되는 기능 자체를 의미..)
// 일단은 컨트롤러를 표시판으로 생각하면 될 것 같다.

본격적인 구현에 앞서, 매핑과 로컬호스트, 임포트 같은 것을 되도록이면 자동완성으로 쓰라고 하는 강사님이 조언한 이유가 있었다.

수업내용 정리

파일명은 === 클래스명 / 일종의 무언가를 하기 위해 만들어진 공간
import는 불러오기, @GetMapping("/...")에서의 ()는 매핑의 이름을 붙여주는 것,
이름을 붙일 때는 "", 안에 /를 넣는다

아니, 그래서 왜 안 되는 건데...?

초반의 이론을 설명하신 이후, 사이클을 직접 돌려보라는 실습에 의해 구동된 포스트맨 API에서 마주한 것은 이것이었다.

일종의 에러메시지, 404에러... 그래서 왜 안되는 것인가에 대해.. 인텔리제이를 봐도 뭐가 잘못되었는지를 모르겠던 차. 발견한 것은 이것이었다.

오타.. 결국 프로그래밍은 오타와의 전쟁이라고들 하던데, product의 u하나 빠졌다고 에러가 발생한 것...(물론 이건 물건이라고 말하는 거에 ㄱ자가 빠진 것이나 다름없었기에... 내 실수였다)

결국 무사히 결과값을 보게 되었다. 사이클을 한 두바퀴 돌고 나서야 스스로 해봐야 이해가 되기도 한다는 것을 이해했다.

이후의 수업내용 정리

public String peoplePayBack() {
        //public 자리는 접근 타입. 
        //String 자리는 자료의 타입,
        //peoplePayBack()는 자료의 이름, 자료의 이름(){} 즉 메서드(함수)다.
        
        return "환불되셨습니다, 고객님";
        //return은 도출값
}

오후 : 결과값 도출, 어떻게 하더라...

이후에는 현금을 받으면 상품권으로 바꿔주는 걸 구현하는데,


이러한 구문으로 표현이 되는데,
대략적으로는 구문이 각각 연결되어, 컨트롤러를 통해, 리퀘스트를 받고, 이후 값을 서비스를 통해 리턴하는 것으로,

  @PostMapping("/change") //()는 이름표
    public String peopleChange(@RequestBody MoneyChangeRequest request) {
 	//@RequestBody ... request의 request는 값, MoneyChangeRequset 는 값이 있는 곳
        String result = moneyService.convertMoney(request.getMoney());
        return result;
    }

리퀘스트를 받고(@RequestBody) , 결과값을 리턴받는데,
리퀘스트는 이렇게

@Getter
@Setter
public class MoneyChangeRequest {
    private Integer money;
}

결과값의 도출은

@Service
public class MoneyService {
    public String convertMoney(int realMoney){
        return "상품권" + realMoney +"원이 교환되었습니다";
    }
}

내용정리

컨트롤러는 고객을 응대하는것, 이해하면 이렇다.
모델(입력값이 저장된 곳)에서 받은 값을 컨트롤러라는 바구니가 담고, 그것을 서비스가 이행함.
그러니 컨트롤러와 서비스는 같이 움직여야 한다. 모델은 입력값이 저장된 공간이라고 생각해두면 될 것 같다
모델에서 private이 사용된 것도, 정보를 바꾸지 못하게끔 설정한 것...?
==> 외부에서 접근하지 못하게끔 하는 것, public은 외부에서 접근이 가능하게끔 하는 것

이후, 재차 공부하는 것에서 다시금 알게 된 것.
파일명은 중요하다. (파일명을 이상하게 해서 꼬여버린 파일을 고치는데 시간을 소모했기 때문...)

Getter, Setter, lombock.. 그리고 Java..

사이클을 끝낸 내가 받은 키워드들이다, lombock은 일종의 라이브러리.. 코드의 작성을 줄여주는데 사용되는 것으로 보인다.

getter와 setter는 일종의 구문이라고 생각하는데,

private가 사용된 값의 주변을 지키는 보디가드의 개념으로 생각하고,
getter는 값을 읽어오고, setter는 그 값을 테이블에 세팅하듯 값을 넣는 것이다.
또한, 값의 유효성을 판별하는 역할을 하기도 한다. (은행 금고에 어린이은행이라고 적힌 종이돈을 넣을 수 없는 것을 판별하는 역할처럼)

디버깅은 험난하고, 정신없다

디버깅의 과정에서, 빨간 동그라미의 윗 부분에서 멈춘다는 것을 알았다.

여기서, 빨간 눈은 값이라서 멈출 수 없음, 금지 표시는 값의 이름이기에 멈춤 불가,
마름모는 끝이 불분명함, 오로지 빨간 색의 동그라미만 디버깅이 가능하다는 것이다.

일단 이렇게 디버깅을 하면서, 어떻게 값이 들어오고 나가는지에 대한 이해도가 높아지는 것 같다.

C R U D의 이해

C는 등록/ R는 읽기 / V는 수정 / D는 삭제

이것 외에는 다른 기능이 없다.

post는 등록, get은 읽기, put은 수정, delete는 삭제..
(PostMapping와 PutMapping만 RequestBody가 들어갈 수 있다 // 나머지는 요청만 하기에 Body가 들어갈 수 없다)

//강사님께서 직접적으로 설명해주신 파트

profile
열심히 노력하고 있는 사람

0개의 댓글