티스토리 뷰
1. API
api 요청 방법
주소
https://openapi.naver.com/v1/search/shop.json
주소 뒤에 ?랑 &를 사용한다.
? 뒤부터는 주소는 아니고 전달하는 요소라고 알려주는것이다. &는 and 역할을 한다.
https://openapi.naver.com/v1/search/shop.xml?query=%EC%A3%BC%EC%8B%9D&display=10&start=1&sort=sim"
헤더에는 api client Id와 client secret를 넣어서 보내주면 응답을 받을 수 있다.
2. org.json
JSON을 자바에서 다루기 위해, JSONObject, JSONArray 클래스가 필요하다.
Maven repository 사이트에서 org.json 라이브러리를 gradle 버전으로 임포트해서 사용하면 된다.
JSONObject안에 값을 추출하여 사용할 수 있게 바꾸기
문자열 정보를 JSONObject로 바꾸기
JSONObject rjson = new JSONObject(result);
JSONObject에서 items 배열 꺼내기
JSONArray items = rjson.getJSONArray("items");
JSONArray로 for문 돌기
for (int i=0; i<items.length(); i++) {
JSONObject itemJson = (JSONObject) items.get(i);
System.out.println(itemJson);
}
JSONObject에서 String, int 데이터 뽑기
String title = itemJson.getString("title");
int lprice = itemJson.getInt("lprice");
검색결과 문자열을 JSONObject를 통해 List로 추출하는 전체코드
public List<ItemDto> fromJSONtoItems(String result){
JSONObject rjson = new JSONObject(result);
JSONArray items = rjson.getJSONArray("items");
List<ItemDto> itemDtoList = new ArrayList<>();
for (int i=0; i<items.length(); i++) {
JSONObject itemJson = (JSONObject) items.get(i);
ItemDto itemDto = new ItemDto(itemJson);
itemDtoList.add(itemDto);
}
return itemDtoList;
}
3. Spring Bean
Spring에서는 Spring의 DI Container에 의해 관리되는 POJO(Plain Old Java Object)를 Bean이라고 부르며, 이러한 Bean들은 Spring을 구성하는 핵심 요소이다. Spring의 Bean을 정리하면 아래와 같다.
- POJO (Plain Old Java Object) 로써 Spring 애플리케이션을 구성하는 핵심 객체이다.
- Spring IoC 컨테이너 (또는 DI 컨터이너)에 의해 생성 및 관리된다.
기존의 Spring MVC에서는 xml을 활용하여 Bean을 등록하고 있었다. 하지만 프로젝트의 규모가 커짐에 따라 사용하는 요소들을 xml에 등록하는 것이 번거로워 져서 어노테이션을 활용한 Bean 등록 방법이 탄생하게 되었다.
Spring Bean 등록방법 (@Bean, @Configuration, @Component)
- @Bean, @Configuration
개발자가 직접 제어가 불가능한 외부 라이브러리 또는 설정을 위한 클래스를 Bean으로 등록할 때 @Bean 어노테이션을 활용한다. 1개 이상의 @Bean을 제공하는 클래스의 경우 반드시 Configuration을 명시해 주어야 한다.
- @Component
개발자가 직접 개발한 클래스를 Bean으로 등록하고자 하는 경우 @Component 어노테이션을 활용
4. EC2 / RDS
EC2
아마존 일래스틱 컴퓨트 클라우드(Amazon Elastic Compute Cloud, EC2)는 아마존닷컴의 클라우드 컴퓨팅 플랫폼 아마존 웹 서비스의 중앙부를 이루며, 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 한다.
RDS
아마존 관계형 데이터베이스 서비스(Amazon Relational Database Service)또는 아마존 RDS(Amazon RDS)는 아마존 웹 서비스(AWS)가 서비스하는 분산 관계형 데이터베이스이다.
애플리케이션 내에서 관계형 데이터베이스의 설정, 운영, 스케일링을 단순케 하도록 설계된 클라우드 내에서 동작하는 웹 서비스이다.
데이터베이스 소프트웨어를 패치하거나 데이터베이스를 백업하거나 시점 복구를 활성화하는 것과 같은 복잡한 프로세스들은 자동으로 관리된다.
EC2에 DB를 직접 설치하여 서비스하는것과 EC2와 RDS를 같이 사용하는 것에 대한 큰 차이는 따로 없는것 같고
RDS를 사용하면 알아서 관리를 해주는 대신 돈을 받아가는것 같다.
5. 리눅스 명령어
- ls : 내 위치의 모든 파일을 보여준다.
- pwd : 내 위치(폴더의 경로)를 알려준다.
- mkdir : 내 위치 아래에 폴더를 하나 만든다.
- cd [갈 곳] : 나를 [갈 곳] 폴더로 이동시킨다.
- cd .. : 나를 상위 폴더로 이동시킨다.
- cp -r [복사할 것] [붙여넣기 할 것] : 복사 붙여넣기
- rm -rf [지울 것] : 지우기
- sudo [실행 할 명령어] : 명령어를 관리자 권한으로 실행한다.
- sudo su : 관리자 권한으로 들어간다. (나올떄는 exit로 나옴)
git bash 사용하여 AWS EC2에 접속하기
ssh -i [키페어] ubuntu@[ec2ip]
jar파일이 EC2에 올라와있을 경우 실행시키는법
java -jar [JAR파일명].jar
포트포워딩
주소를 입력할때 항상 뒤에 포트번호를 적었었는데 http요청 기본포트가 80포트이고 기본포트는 생략 가능하기 때문에 80포트로 바꾸면 뒤에 포트번호를 안적어줘도 되게된다.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
nohup
git bash를 종료하면(=즉, SSH 접속을 끊으면) 프로세스가 종료되면서, 서버가 돌아가지 않고 있다. 그러나 우리가 원격접속을 끊어도, 서버는 계속 돌아가게 실행시키는 방법이 nohup이다.
nohup java -jar JAR파일명.jar &
이렇게 서버를 돌리게 되면 ssh접속을 종료해도 돌아가기 때문에 종료방법이 따로 있다.
# 아래 명령어로 미리 pid 값(프로세스 번호)을 본다
ps -ef | grep java
# 아래 명령어로 특정 프로세스를 죽인다
kill -9 [pid값]
Reference
'항해99' 카테고리의 다른 글
[항해99] Spring 심화반 강의 (1) 정리 (0) | 2021.03.26 |
---|---|
[항해99] 3주차 회고 알고리즘-2 (문제풀이) (0) | 2021.03.21 |
[항해99] 웹개발의 봄, Spring 강의(3) 정리 (0) | 2021.03.20 |
[항해99] 웹개발의 봄, Spring 강의(2) 정리 (0) | 2021.03.19 |
[항해99] 웹개발의 봄, Spring 강의(1) 정리 (0) | 2021.03.19 |