스프링을 한마디로 표현하자면,

Spring은,
JSON 형태의 data를 반환해주는 서버 프레임워크이다.

 

먼저 웹 서버는 두가지 형태를 반환해주는데,

하나가 html, css 와 같은 프론트엔드 파일이고

또 하나는 JSON 형태의 그냥 "데이터"를 반환해준다.

이 때 스프링은 후자의 경우를 다루는 서버 프레임워크인 것이다.

 

예를들어, 만약에 Rest Controller 에서 Class 를 반환하게 된다면, Spring은 컨트롤러에서 반환된 Class 정보를 자기가 알아서 JSON으로 변환하여 웹화면에 보여준다.

 

이때 Rest Controller란?

Rest : 서버의 응답이 JSON 형식이라는 의미이며, html이나 css를 반환할 때는 그냥 Controller이다.

Controller : 요청한 값을 반환해주는 자동응답기이다.

 

따라서, Rest Controller 는 JSON으로 응답하는 자동응답기를 의미한다.

Create

abstract Timestamp 경우 밑에 3개 어노테이션 기억하기

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)

# 그리고 메인 함수 어노테이션도
@EnableJpaAuditing

 

Read

 

Update

response에서 속성 안나눠줌. 속성 안나눠주면 변경할 때 특정 id 찾기 불가능

ajax 에서 data 넣어줄 때 JSON.stringyfy() 안해줌

success response 됐을 때 새로고침(window.location.reload)안해줌. 변경안된줄

 

Delete

주소 articles 인데 자꾸 article 이라고 단수형으로 착각해서 작성함

https://codechacha.com/ko/java-parse-json/

 

Java - JSON을 파싱하는 가장 쉬운 방법

org.json 라이브러리를 사용하여 JSON을 파싱하는 방법을 소개합니다. JSON은 Object, Array, Key-Value 타입으로 이루어져 있으며 Value는 String, Int, Long, Boolean 등의 타입을 지원합니다.

codechacha.com

jar 파일이란 java archiv이다. 라이브러리 묶음이다.

 

https://memories95.tistory.com/127

 

[Spring Boot] 외부 jar 사용하기 (FileUpload, Json)

만약 Webjar에서 제공되지 않는 외부 jar파일을 사용하기 위해서는 어떻게 해야할까? : 답은 단순하게 직접 추가해서 사용하는 수밖에 없다. Gradle에서는 build.gradle 파일에 외부 중앙 저장소와 라이

memories95.tistory.com

jar 파일을 가져오는것은 Maven Repository에서 가져와서 build.gradle에 로드해주는 것같다.

 

https://blog.naver.com/dktmrorl/222169487095

 

[Java] 메이븐 저장소(Maven Repository) 개념

메이븐 저장소(Maven Repository) 개요 메이븐(Maven)은 빌드 툴이지만 라이브러리 의존성 관리 툴로 더...

blog.naver.com

마지막으로 Maven Repository 에서 JSON 라이브러리 가져오기

build.gradle > dependency 에 복붙하면 된다.

https://mvnrepository.com/artifact/org.json/json

 

22.03.10

AWS의 RDB라는 서비스는 나의 데이터를 원격서버에 저장해주는 서비스를 말한다. H2 database 같은 경우에는 일시적으로 서버를 켰을 때만 데이터가 저장되는 휘발성의 DB서버였지만, AWS의 RDB를 열어주면 서버를 끄더라도 DB가 날아가지않고 저장되어 있다. - 구매하고 설정하는 것은 또 따로 더 공부해야 할 것 같다.

 

og 태그란, 내가 만든 웹사이트의 주소를 공유했을 때 썸네일로 뜨는 카드를 일컫는다.

 

EC2 서비스는 내 도메인 서버 컴퓨터를 만들어주는 서비스이다. 이 때 EC2는 주소 도메인을 사는 것이 아니라 IP주소만을 사는 것이다. 도메인은 따로 구매해서 연결해주어야 한다.

 

SSH 는 Secure Shell Protocol의 약자로, 다른 컴퓨터에 접속할 때 쓰는 프로그램이다. 접속할 컴퓨터의 22번 방이 열려있어야 접속이 가능하다. AWS EC2의 경우 22번 포트는 항상 열어놓기에 항상 접속할 수 있는 상태이다.

 

포트포워딩이란, 포트 번호를 뒤에 입력하지 않아도 자동으로 :80 포트(통상적 기본 포트)에 접속하도록 도와주는 것을 말한다. 

 

nohup이란, 서버를 종료해도 계속해서 서버가 돌아가게 하는 것을 말한다. 서버를 킬 때 nohup 과 & 로 킨 이후에, 종료시킬 때는 번호를 알아낸 다음에 kill 명령어로 종료시킨다. 

 

내가 만든 웹사이트

http://bubblebub.shop/

 

완주 수강증

https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/cert/img/new_cert_61fc425aac0be6d3c1afc26b_61f5106d2eb23534dcdc681a.jpg

22.03.09

API를 가져와 쓰기 위해서 필요한 두 가지. Url 과 그리고 요청방식

Service 만들 때 @Transactioanl 잊지말기!

스프링이 그때그때 자동으로 가져와서 쓸 수 있는지 권한 판단을 할 때 사용하는 것 => 컴포넌트로 등록하면 권한이 등록된다. 마음대로 갖다 쓸 수 있는 권한 목록이 곧 컴포넌트에 등록되었다라고 한다. => 이때 컴포넌트로 등록하는 방법은 @Component 어노테이션을 부착해주면 된다.

또한, API를 받아올 때 컨트롤러에서 물음표 뒤의 query= 뒤의 파라미터를 입력으로 받고싶다면 @RequestParam String query 라고 입력해주면 된다. 이 파라미터의 뜻은, "요청된 파라미터 중에 query 라는 녀석이 있으면 그 녀석을 받아와라." 라는 뜻이다.

 

contentType 과 data 속성은 Put과 Post 방식에서만 사용한다.

삼항연산자를 이용해서 class 를 선택적으로 반환할 수 있다. ${(조건식) ? '':'(클래스이름 ex.none)'}

 

@Scheduler(cron= 정해진 예약 시간)

2022.03.06

ajax를 이용하여 데이터를 넘겨주는 것을 ARC로 서버에 요청을 보내는 방식이 코드화된 것이다. 따라서 ARC에서 요청보내던 방식 그대로 어떤 방식(get, post, put, delete)인지, url은 뭔지, contentType은 JSON이다 와 같은 내용들을 담고 있다. 이때 data 부분은 ARC에서 body에 해당하는 부분이며, 이 때 JSON.stringify(변수) 는 javascript 변수값을 JSON 형식으로 번역해주는 역할을 맡는다. 

 

window.location.reload(); 는 새로고침을 하라는 코드이다.

 

Timestamp 에 getter 넣는것, 메인실행java에서 @EnableJpaAuditing 넣어주는 것.

2022.02.21

Domain은 Table이고, Repository 는 SQL 이다.

JPA Repository 를 interface로 extends 하면, 나중에 Java 프로젝트 내에서 Domain Class 를 생성할 때 틀을 잡아준다.

JPA를 사용하면 귀찮게 SQL 을 다 작성할 필요가 없다.

 

2022.02.23

Spring은 크게 세 가지의 파트로 구분된다. Controller, Service, Repo 가 그것이다.

Controller는 요청이 들어오면 자동응답을 해주는 주소 링크 변환 길 찾아주기 같은 느낌이고,

Service는 Controller와 Repo를 연결해주면서 가장 중앙에서 데이터를 Update를 해주고,

Repo 는 Repository의 약자로써 DB와 밀접한 연관이 있다. SQL이자 데이터 저장소라고 이해하면 편한 것 같다.

 

@Entity 테이블임을 알려주는 어노테이션

만약 새로운 테이블을 create 할때 id 값이면 @Id를 붙이고, 평범한 컬럼값이라면 @Column을 붙인다.

자동 증가 어노테이션은 @GeneratedValue(strategy = GenerationType.AUTO) 이다.

SQL Query의 변경이 일어날 때 정보가 이동한다는 뜻의 어노테이션이 @Transactional 이다.

 

2022.02.24

Lombok 이란, 어노테이션을 이용하여 Java코드를 줄여주는 녀석이다. 예를들어 @Getter 어노테이션을 이용하여 getter 메소드들을 자동생성해줄수있고, 생성자도 직접 만들지 않고 @NoArgsConstructor나 @RequiredArgsConstructor를 이용하여 대신할 수 있다.

여기서 질문. @RequiredArgsConstructor를 이용하면 final로 선언된 필수적인 파라미터를 자동으로 생성자에서 가져온다고 알고있는데, 그렇다면 final로 선언된 모든 파라미터를 알아서 가져와지는건가? 아니면 courseRepository만 가져와지는건가?

DTO 란 Data Transfer Object 의 줄임말로, 자바에서 은닉화와 비슷하다는 느낌을 받았다. DB 그 자체를 건드리지 못하게 하기 위해 보안성의 이슈로 따로 클래스와 관련된 dto를 만들어서 그 클래스를 이용하여 DB를 업데이트하는 과정이다. 이 dto는 lobbok 어노테이션을 이용하면 더 쉽게 만들 수 있다.

 

2주차 과제진행중 내가 버그를 맞딱트린 이유

@Entity 나 @RestController 등 어떤게 테이블이고 컨트롤러며 서비스인지 명시를 안해서 오류

get 메소드를 컨트롤러에서 작성할 때 반환값을 void로 반환함. findAll() 이기에 List로 반환해야됨.

1주차 강의를 듣고 궁금한 것들

 

1. 왜 gradle 로 프로젝트 만들었는데 왜 maven repository 에서 라이브러리를 가져오는지

- 어짜피 같은 라이브러리 체계이고 검색해봤을 때 gradle이 maven에서 파생된 것 같다.


2. json 이 왜 라이브러리인지

- json 이라는 무언가를 가져온다기보다 json 이라는 데이터 형식을 사용할 것이라고 알려주는 것 같다.


3. 컨트롤러가 왜 꼭 main > java > '우리가 만든 패키지 폴더' 안에 있어야 하는지

- 우리가 재생버튼을 눌러서 Run할 메인 어플리케이션이 그 안에 있으니까 그런 것 같다.

+ Recent posts