본문 바로가기

Java

(41)
HashMap & HashSet HashMap 과 HashSet에 대해서 정리하겠습니다. 둘 다 Collection Framework에 속한 클래스들입니다. HashSet Set인터페이스를 구현한 것으로 들어오는 객체 중 중복된 객체는 허용하지 않습니다. HashSet에 들어가는 객체는 반드시 equals(), hashCode() 메소드를 구현해야 HashSet에 들어갈 때 중복된 객체를 확인할 수 있습니다. HashMap Map 인터페이스를 구현한 것으로 key-value형식의 데이터를 저장합니다. 중복된 key값을 허용하지 않습니다. Map 인터페이스를 구현한 클래스에는 HashMap, TreeMap이 있습니다. TreeMap은 넣은 순서를 유지하는것에 반해 HashMap은 순서를 유지하지 않습니다. HashSet에 비해 조회하는 ..
spring boot & JPA 프로젝트 생성 (JDBC는?) 기존에는 JDBC를 통해 Database의 데이터를 조작하곤 했습니다. 여기서 JDBC란 JAVA 언어와 Database를 이어주는 라이브러리입니다. java 에서 JDBC 를 사용하고 싶다면 dependency를 이용하면 됩니다. 하지만, 보다 객체지향적이며 코드 재사용이 가능한 방법이 있습니다 바로 ORM을 이용하는 것인데요. hibernate, jpa와 같은 ORM은 자바 객체를 sql 데이터 베이스의 테이블에 자동으로 영속화 해주는 기술입니다. JPA 프로젝트 셋팅 sts 를 이용해서 spring boot를 사용하겠습니다. dependency 설정 dependency 를 설정해주고 나면, 이제 annotation을 설정해줍니다. annotation설정 post라는 테이블에서 annotation 설..
AWS 에 Spring boot project 배포하기 오늘은 github 에 올라가있는 개인 project를 aws 에 배포를 해보겠습니다. 우선 aws 서버에 git을 설치합니다. sudo yum install -y git 그런다음 github의 본인 project의 주소를 clone해옵니다. git clone을 통해 서버에 붙여넣습니다. git clone [본인 project 주소] 깃에서 코드를 가져왔지만 아직 build를 해준 상태는 아닙니다. 저는 maven을 이용했기 때문에 maven을 이용해서 build를 해줍니다. 제 AWS서버에는 아직 maven이 설치되어 있지 않아서 maven 설치 먼저 진행했습니다. Mavan 설치 명령어 sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven..
Content-Type 서버에 요청을 보낼때, Content-Type을 application/json, text/plain 등으로 지정하여 보낸 경험이 있습니다. 사용할 땐, 데이터 타입이겠지라고 추상적으로만 생각했는데, 보다 깊이 이해하기 위해 이 글을 작성합니다. 서버가 클라이언트에게 자원을 보낼 때 웹 서버는 HTTP header에 필요한 정보를 담아 보냅니다. header에는 웹서버의 소프트웨어 타입, 서버의 날짜 및 시간, HTTP 프로토콜, 사용중인 커넥션 타입을 지정합니다. 헤더는 또한 클라이언트가 저장해야할 쿠키를 포함하기도 합니다. 이와 같은 자원의 content type은 header안에 있는 Content-Type에 의해 지정되게 됩니다. 가장 많이 사용했던 형식은 text/html인데 이는 파일종류는 te..
RESTful API 웹서비스 테스트 Spring 의 기본적인 시스템은 Test를 개발과 동일시하여 TDD기반의 개발을 진행합니다. Spring에서 진행하는 test는 사용하기 쉽게끔 만들어져있습니다. TDD는 단위테스트를 보다 편하게만들어줍니다. 단위테스트는 더 나은 코드를 더 빨리 만들어내주며, 상대적으로 더 쉽고 비용이 적게 드는 방식입니다. 단위테스트는 기업의 품질 경쟁력 뿐 아니라 프로그래머들을 보다 편하게 만들어주기 위해 존재하는 것입니다. JUnit JUnit은 단위테스트를 정형화시켜 쉽게 해주는 테스트 지원 프레임워크입니다. 스프링에서 JUnit 프레임워크 사용을 위해선 spring-test 라이브러리가 필요합니다. Service, Repository class는 빌드시 같이 테스트를 수행해야합니다. 단위 테스트란 소스코드의 ..
API Security & JWT - 웹 서비스 인증 방식 중 하나인 토큰을 통한 인증방식 이해 - JWT라는 표준 JSON Web Token 구현 어플리케이션에서 보안은 주로 인증(Authentication) 과 인가(Authorization)을 의미하며 Spring Security에서 다루어집니다. id/pw 기반의 인증방식은 최근 더욱 강력한 인증방식인 2단계 인증, 지문, 안면인식을 포함한 하드웨어 인증 방식 등 여러 강력한 인증방식으로 보완/대체 되고 있습니다. 인증과 인가 인증: 클라이언트가 자신이 주장하는 사용자와 같은 사용자인지를 확인하는 과정 인가: 권한부여, 클라이언트가 하고자하는 작업이 해당 클라이언트에게 허가된 작업인지 확인하는 과정 Spring Security - Spring에서 보안을 위한 별도의 모듈입니다. -..
REST에서 CRUD 구현 오늘 정리할 내용은 아래와 같습니다. RESTful API 서비스에서의 HTTP 메소드 사용 JSON Data format 및 REST 클라이언트 JSON은 Javascript Object Notation의 약자로 API 서버간, 클라이언트 서버간의 데이터 교환 포맷으로 많이 사용되고 있습니다. REST 클라이언트는 웹 브라우저에서 직접적으로 지원하지 않는 PUT, DELETE 메소드도 테스트 가능합니다. Data Transfer Object 디자인 패턴 - 데이터를 각 서버/클라이언트 간 전달하기 위한 목적으로 만든 객체 - VO패턴의 확장형으로 거의 유사합니다. - JVM위에서 application level위에서 다루는 데이터는 class로 만들어야합니다 JSON(Javascript Object N..
Spring MVC로 RESTful API 서비스 구현 Spring MVC로 RESTful API를 구현해보겠습니다. Spring자체가 Layered Architecture를 기본적으로 지원하고 있습니다. @Controller 사용 @Controller Client에서 요청이 들어오면 가장 먼저 받아들이는 부분이 Controller입니다. Spring에서는 Controller 어노테이션을 통해 지정합니다. (@Controller) 이 어노테이션은 class를 component로 만들어줍니다. component는 spring container위에 로딩되는 객체입니다. 이 component는 자동적으로 spring에서 관리됩니다. 상단의 이미지의 IndexController라는 class는 어떠한 것도 상속받지 않은 POJO입니다. Controller안에서는 m..