학습 및 독서 기록장/학습 중에 기록한 것들

23.12.03.일-공부 중 기록

계발하는도르트 2024. 2. 28. 17:20

공부1

-스프링 부트-

@ResponseBody가 필요없는 경우?

지역 변수란?

인스턴스 변수란?

컨트롤러 객체는 서버를 시작할 때 딱 한 번만 생성되고 컨트롤러 객체를 호출하는 경우 이 내용을 코드대로 변경해나갈 뿐 새로 생성되는 것이 아니다. 또한, 서버가 종료되기 전까지 없어지지 않는다.

액추에이터란?

서버 시작하고 재생 버튼 누른 후, Console칸 옆에 Actuator칸이 있다. 이를 누르면 Add dependency to the spring-boot-starter-actuator to enable it라고 나오는데 이는 Actuator가 아직 활성화되어있지 않아 나타난다. 이를 클릭하면 build.gradle 파일의 dependencies란에 Actuator를 추가해주는 코드가 자동으로 정의된다. 이후, 서버를 다시 시작해주면 Actuator의 Beans란, Health란, Mapping란을 통해 어플리케이션의 상태, 매핑 정보, 응답 처리가 가능한 상태인지(ping), 빈의 상태를 알 수 있다. Beans란의 application의 class를 누르면 현재 개발자가 호출한 파일의 클래스를 스프링 부트가 어떻게 활용하는지 알 수 있다. 이렇게 하면 개발자가 만들기만 하면 스프링 부트가 알아서 활용을 하는데 개발자는 스프링 부트가 어떻게 활용하는지 궁금할 수 있다. 이 궁금증을 해결해주는 존재가 Actuator이다.

ArticleController.java 파일 생성 + 액션 메서드 작성 @GetMapping("/article/write")
이 액션 메서드를 새로운 컨트롤러 파일을 만들어서 작성해야 했을까? 그래도 되긴 하지만 하나의 컨트롤러에 적어줘도 된다. 근데 나중에 협업을 할 때, 서로 난해해질 수 있기에 컨트롤러 파일을 새로 만들어준 것이다.

[templates] => [new] => [File] => article/write.html이라고 해주면 article 폴더가 생성되고 그 속에 wrtie.html 파일이 만들어진다.

주민 센터 건물의 입구에서 누군가 들어왔다. 그럼 창구 직원이 앉아있다. 이 떄, 바로 일을 바로 처리해주나?, 아니면 처음에는 창구 직원을 2번 찾아가나? 후자가 맞다. 마찬가지로 게시판을 만들 때, 2번에 나눠 실시된다. 첫 번째 요청에서는 양식을 요청하고 그 후에 이를 처리하는 요청을 한다.

-html-
href??

a 엘리먼트?

<a href="/article/doWrite?title=제목&body=내용"></a>

-스프링 부트-

컨트롤러에 액션 메서드를 작성했다면 return에 작성할 html를 만들어주자.

자바, 접근 제한자를 사용하는 이유??

어떤 클래스를 클릭하고 제일 왼쪽에 정사각형 3개가 그려진 것을 클릭하면 현재 파일의 클래스들에 어떤 변수들이 존재하는지를 알 수 있다.

@Getter를 작성해주면 getID(), getTitle(), getBody()가 자동으로 생성된다.

맵을 사용

put()?

Map에 대해 공부하기

메서드 {} 안에서 정의된 변수는 지역변수라고 볼 수 있다.

객체는 힙에 생기고 전역 변수는 스택에 생긴다. 힙은 영구 저장소, 스택은 임시 저장소라고 보면 된다.

인텔리제이에서 보라색으로 나오는 것은 전역 변수를 의미한다.

**인텔리제이에서 1과 2라는 서로 다른 클래스 파일에 작성한 것을 활용하여 어떤 인스턴스를 정의할 때, 매개변수의 값을 3이라는 클래스 파일에 정의할 떄 이 매개변수가 보라색으로 나왔다면 이는 다른 클래스 파일의 내용을 가져와서 사용하였기 때문이고 이 매개변수는 전역 변수의 값이 된다??

클릭할 떄마다 게시물을 저장하여 여러 게시물이 저장되게 하고 싶으면 []를 사용하여 리스트를 만들어라.

리스트 사용법??

hashcode()??

rs.put("resultCode", "S-1");
여기서 S = success

성공은 여러 가지 케이스가 있다. 실패도 마찬가지다. 이런 것처럼 각각의 상황을 코드화해서 나타내는 것이 좋다. 왜 성공하고 실패했는지 알 수 있기 떄문이다.

HashMap은 {}에 작성한 코드의 순서를 기억하지 않는다. 그래서 LinkedHashMap을 사용한다.

rs = result

네가 만약 화가인데 그린 그림이 대박이 나서 그림을 팔면 300만원을 번다고 치자. 상식적으로 완선된게 좋은 것이다. 근데 그림 한 점을 그리는데 2주가 걸린다. 그럼 최대 600만원을 벌 수 있다. 이 때, 네가 그리지 말고 복사해야 겠다고 여겼고 고객들에게 물었던이 복사도 괜찮다고 했다. 그럼 복사를 하는게 좋을 것이다. 근데 복사를 못한다. 사가는 사람이 이름을 적어 달라고 하기 떄문이다. 그래서 하나를 완성해놓고 복사를 하는게 불가능하다. 그러므로 클래스는 미완성일 때가 좋다. 그래서 딱 한 조각을 미완성으로 하기 위해 만들어두고 이를 활용한다.

이렇게 해주면 put()를 사용해줄 필요가 없다.

모든 클래스는 Object 클래스의 자손이다.

자료형을 구체적으로 적을수록 활용할 수 있는 데이터의 범위가 좁아지고 모호하게 적을수록 활용할 수 있는 데이터의 범위가 넓어진다.

-git-
방금 커밋한 것의 커밋 메시지를 바꾸고 싶으면
git commit --amend를 git bash에 입력하고 커밋 메시지를 수정한 후, Ctrl + c 누르고 :wq!를 입력하면 수정이 된다.

-스프링 부트-
Object처럼 추상적인 것에서 구체적인 것으로 리모콘을 형변환을 해줘야 한다. 만약 형변환을 하지 않고 바로 만들고 싶으면 Object말고 구체적인 참조형 자료형을 사용하면 된다. 근데 이렇게 하면 범용성을 잃는다.

20강까지 수강 완료함.