본문 바로가기

Java

(20)
(Java) OAuth 3개의 참여자각각이 누군지? 나의 서비스 사용자 나의 서비스가 연동하려고 하는 그들의 서비스 (구글, 페이스북) 그들의 서비스를 접속할 수 있도록 허가를 받아야 함 사용자가 나의 서비스에 그들의 서비스의 아이디, 비밀번호를 넘겨서 나의 서비스가 저장 후 그들의 서비스에 넘겨서 상호작용을 한다. 이런 식의 방법은 너무 위험하다.누군지 알 수 없는 서비스에 그들의 서비스의 아이디, 비밀번호를 넘겨주면 그 아이디, 비밀번호를 다른 위험한 일에 사용될 가능성이 있다. 이런 일이 발생하지 않게 하려고 OAuth라는 기능이 있다. OAuth를 사용하게 되면 아이디, 비밀번호를 저장을 안 해도 되고 그들의 서비스에서 accessToken을 발행을 하기 때문에 사용자가 요청을 하게 되면 나의 서비스에서는 이 acces..
객체 지향 프로그램(OOP) 객체 지향 프로그래밍은소프트웨어 개발에서 사용되는 프로그래밍 패러다임 중 하나로,다양한 객체들이 협력하여 하나의 애플리케이션으로 동작하는 프로그래밍 방법입니다. 장점상대 객체의 세부 정보를 알 필요 없이그저 객체에 무언가를 요청만 하면 된다는 점이 있습니다. 핵심 개념클래스와 객체클래스 == 객체를 생성하기 위한 템플릿입니다.객체 == 클래스의 인스턴스, 데이터와 해당 데이터를 처리하기 위한 메서드를 포함합니다. 추상화객체의 공통적인 속성과 기능을 추출하여 정의를 해 둔 것입니다. 자동차와 오토바이라는 클래스가 있으면 그 클래스들의 공통적인 부분은 전진과 후진,.. 등으로 볼 수 있다.이때 이 공통적인 부분을 가진 추상 클래스 또는 인터페이스를 만들어서 사용을 할 수 있다.  상속상속 ==하위 클래스가 ..
Getter, Setter 어노테이션 Getter와 Setter를 사용하는 이유는 객체 지향의 원칙 중 하나인 정보 은닉 원칙을 지키려고 사용을 합니다.이 원칙은 객체의 구체적인 정보를 외부로 노출시키지 마라 라는 얘기를 하고 있습니다. 자바에서 사용을 하게 되면 클래스 내의 모든 필드들은 private으로 생성을 함으로 필드의 정보를 외부에서 건드릴 수 없게 합니다.이 정보들을 변경하거나 가져오기를 원하면 public get, set 메서드를 생성해서 변경을 하거나, 가져오면 됩니다.  setter의 단점에는 객체의 속성이 갖는 값을 바꾼 이유를 명확하게 알 수 없고,데이터를 변경하려고 하는데 이때 setter를 사용해서 코드를 작성을 하게 되면setter를 나열한 것만으로 어떤 의도로 데이터를 변경하는지 명확히 알 수 없습니다. 객체의 ..
Rest, API, Restful API 간단 Rest란자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.Rest는 1. 자원 중심으로 설계됩니다.자원은 문서,이미지 등 다양한 유형의 콘텐츠가 될 수 있고,각 자원은 고유한 URI로 식별됩니다.2. 해당 자원에 대해서 어떤 작업을 할지를 HTTP Method를 이용해서버와 클라이언트간의 데이터를 주고받을 수 있습니다. 자원(Resource): URI자원에 대한 행위(Verb): HTTP Method자원에 대한 행위의 표현(Representations)HTTP Method의 종류에는자원 생성은 POST,조회는 GET,전체 수정은 PUT,부분 수정은 PATCH,삭제는 DELETE 가 있습니다Rest의 특징에는자체 표현 ,무상태성,캐시 처리 가능 등의 특징이 ..
Java 관심사 분리(SOC), 관점 지향 프로그래밍(AOP) 간단하게 관심사 분리란컴퓨터의 프로그램의 부분을 분리시키는 디자인 패턴으로 각 부분의 개개인의 관심사를 해결합니다.관심사 분리는 변화의 폭을 최소한으로 줄이고자 할 때 필요로 하게 됩니다.관심사 분리가 필요한 이유에는관심사를 분리시켜 놓으면 각 기능의 코드를 파악하기 쉽고특정 기능을 수정, 추가를 할 때도 그 기능만 교체를 함으로 간단하게 해결을 할 수 있기 때문입니다.관심사 분리의 장점에는 영역간의 구분이 명확하여 한 영역이 다른 영역에 영향을 주지 않아서개별 영역들에 대한 이해가 쉽고, 코드 재사용성이 올라가며 변경과 유지보수가 수월해진다는 장점이 있습니다.관점 지향 프로그래밍이란핵심 관심 사항과 공통 관심 사항으로 분리시키고 각각을 모듈화 한 것을 의미하며,공통 모듈인 인증, 로깅, 트랜잭션 처리에 용이합니..
Java Spring, 객체 지향 프로그래밍 RESTful 한 API를 설계하는 장점 http 프로토콜을 기반으로 하며웹에서 사용되는 기술과 규약을 그대로 활용웹 어플리케이션 또는 서비스 간에 정보를 쉽게 주고받을 수 있다 Rest의 설계규칙을 잘 지켜서 개발한 api가 Restful한 api라고 할 수 있습니다. Rest의 설계규직은 URI는 정보의 자원만 표현해야하고자원의 상태는 HTTP 메서드를 사용해서 명시해야합니다.  핵심원칙1. 자원의 식별2. 메시지를 통한 자원의 조작3. 자기 서술적 메세지,4. 애플리케이션 상태의 엔진으로써의 하이퍼미디어5. 독립적 플랫폼언어 독립적인 인터페이스를 제공다양한 환경에서의 상호 운용성이 보장 설계 원칙1. 자원의 식별모든 자원은 고유한 URI를 가지며이를 통해 자원을 식별합니다.URI == 인터넷상에서 ..
MVC, 3 Layer Spring MVC???전통적인 동기식 웹 애플리케이션 개발을 위한 프레임워크 더보기동기? 비동기?  동기 : 직렬적으로 태스크를 수행하는 방식요청을 하면 하나의 태스크에서 응답이 나올 때까지 나머지 태스크는 대기를 한다 비동기:병렬적으로 태스크를 수행하는 방식요청을 하면 하나의 태스크에서 응답이 나오든 말든 상관없이 다음 태스크를 동작시킨다.A함수에서 B함수로 요청을 할 때 콜백 함수를 함께 전달하고 B함수가 끝나면 콜백 함수를 실행시킨다.동기식 요청- 응답 기반으로 동작(클라이언트에서 요청을 하면 서버에서 요청을 처리하고 클라이언트로 응답을 한다,)=================================================================서블릿 api와 밀접하게 연동된다.전통..
Spring 쿠키와 세션, JWT 쿠키와 세션 모두 HTTP에 상태 정보를 유지하기 위해 사용  쿠키(클라이언트에 저장)클라이언트에 저장할 목적으로 생성한 작은 정보를 담은 파일 세션(웹 서버에 저장)서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용유일무이한 세션 ID를 부여한다서버에서 생성한 세션ID는 클라이언트의 쿠키값으로 저장 클라이언트 식별에 사용 처음 클라이언트가 요청을 할 때 세션 ID를 생성해서 응답을 할 때 세션 ID를 보내준다클라이언트가 다음 요청을 할 때 이 세션ID와 함께 요청을 하게 된다. JWTjson 포맷을 이용하여 사용자에 대한 속성을 저장하는 claim기반의 web token이다 서버가 1대인 경우 서버의 세션에 모든 클라이언트의 로그인 정보를 가지고 있어서 모든 클라이언트가 사용가능 서버가 2대인..