반응형

IOC(Inversion of Control)

 

제어의 역전이라고 부릅니다. 객체의 생성과 그 객체들의 관리까지 모두 관리한다는 개념으로 기존 자바 기반으로 어플리케이션을 개발할 때 자바 객체를 생성하고 서로 간의 의존 관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었는데 IOC 컨테이너는 객체의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 객체의 생명주기를 관리합니다. 이것을 제어권이 역전되었다는 의미로 IOC라고 부릅니다.

 

DI(Dependency Injection)

 

객체 자체가 아니라 프레임 워크에 의하여 객체의 의존성을 주입하는 설계 패턴인데 IOC와 연결됩니다. IOC의 제어권이 프레임워크에게 가게 되는 것은 IOC 컨테이너가 DI를 통해 주입시키는 데에 있습니다. 주입 방법에는 생성자 주입, 수정자 주입, 필드 주입 등이 있습니다.

 

AOP(Aspect Oriented Programming)

 

개발을 할 때 반복되는 작업들을 모아서 필요한 적절한 시기에 적용하는 개념으로 따로 코드를 밖에서 개발하고 프록시 개념으로 메소드가 실행되기 전, 실행된 후, 실행 시점에 따라 기능을 적용시키는 것을 말합니다.

반응형

'Java Web > 개발 지식' 카테고리의 다른 글

WAS와 Web Server 차이  (0) 2022.01.28
Java 1.8에서의 변화  (0) 2022.01.27
HTTP와 HTTPS의 차이  (0) 2022.01.26
prefix와 suffix  (0) 2021.10.20
카멜 케이스, 스네이크 케이스, 파스칼 케이스, 케밥 케이스  (0) 2021.10.01
반응형

HTTP(Hyper Text Transter Protocol)

 

서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜입니다. HTTP는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로써 80번 포트를 사용하고 있으며 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며 클라이언트는 80번 포트로 요청을 보내게 됩니다. 하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이었기 떄문에 HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었습니다. 이런 문제를 해결하기 위해 등장한 것이 HTTPS입니다.

 

HTTPS(Hyper Text Transfer Protocol Secure)

 

HTTP에 데이터 암호화가 추가된 프로토콜로써 HTTP와 다르게 443번 포트를 사용하며 네트워크 상에서 중간에 3자가 정보를 볼 수 있도록 암호화를 지원합니다. 대칭키와 비대칭키 암호화 방식을 모두 사용하고 있으며 이를 통해 빠른 연산 속도와 안정성을 모두 얻고 있습니다. 먼저 서버와 클라이언트 간의 세션키 교환이 이뤄지고 여기서 세션키를 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어집니다. 문제는 이 세션키를 클라이언트와 서버가 어떻게 교환할 것인가 인데 이 과정에서는 비대칭키가 사용됩니다. 즉, 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서는 비대칭키를 사용하며 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키를 사용합니다.

 

HTTPS 연결 과정

 

1) 브라우저(클라이언트)가 서버로 최초 연결을 시도합니다.

2) 서버는 공개키를 브라우저에게 넘겨줍니다.

3) 브라우저는 인증서의 유효성을 검사하고 세션키를 발급합니다.

4) 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송합니다.

5) 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻습니다.

6) 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행합니다.

반응형
반응형

하단 링크 참고

 

[Spring] IntelliJ에서 Spring 개발하기 - quick start

Eclipse에서 spring framework를 이용한 웹 개발을 할 때는 STS(Spring Tool Suite)의 도움을 받는 것이 일반적이다. 하지만 IntelliJ에서는 그런 기능이 존재하지 않는다. 원래 Spring framework는 STS의 도움 없..

glow153.tistory.com

 

반응형
반응형

SRP(Sigle Responsibility Principle) - 단일책임의 원칙

: 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는 데에 집중되어 있어야 한다는 원칙으로 이는 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 함을 의미합니다.

 

OCP(Open Close Principle) - 개방폐쇄의 원칙

: 버틀란트 메이어 박사가 1998년 객체지향 소프트웨어 설계 라는 책에서 정의한 내용으로 소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원리입니다. 이것은 변경을 위한 비용은 가능한 줄이고 확장을 위한 비용은 가능한 극대화 해야 한다는 의미로 요구사항 변경이나 추가사항이 발생하더라도 기존 구성요소는 수정이 일어나지 말아야 하며 기존 구성요소를 쉽게 확장해서 재사용할 수 있어야 한다는 의미입니다.

 

LSP(The Liskov Substitution Principle) - 리스코브 치환의 원칙

: 서브 타입은 언제나 기반 타입으로 교체할 수 있어야 한다는 원칙으로 서브 타입은 기반 타입이 약속한 규약을 지켜야 한다는 의미입니다. 상속은 구현 상속이든 인터페이스 상속이든 궁극적으로는 다형성을 통한 확장성 획득을 목표로 합니다. 다형성과 확장성을 극대화하려면 하위 클래스를 사용하는 것보다 상위 클래스를 사용하는 것이 더 좋습니다.

 

ISP(Interface Segregation Principle) - 인터페이스 분리의 원칙

: 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙입니다. 즉, 어떤 클래스가 다른 클래스에 종속될 때 가능한 최소한의 인터페이스만을 사용해야 합니다. 

 

DIP(Dependency Inversion Principle) - 의존성 역전의 원칙

: 의존 관계의 역전이란 구조적인 디자인에서 발생하던 하위 레벨 모듈의 변경이 상위 레벨 모듈의 변경을 요구하는 위계 관계를 끊는 의미의 역전입니다. 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고 받음으로써 관계를 최대한 느슨하게 만드는 원칙입니다.

반응형

+ Recent posts