IoC '객체의 생성, 생명 주기의 관리 등 객체에 대한 제어권이 바뀌었다.' 라는 의미다. 개발자는 인스턴스 생성부터 인스턴스 관리를 신경써야 했다. 하지만 이를 프레임워크나 다른 주체에 제어권을 위임하는 것을 말한다. 컨테이너 컨테이너의 역할은 인스턴스의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하는 것이다. BeanFactory IoC 원리를 이용한 스프링 프레임워크의 IoC 컨테이너다. BeanFactory가 관리하는 객체를 빈(Bean)이라고 부른다. BeanFactory가 빈을 인스턴스화 하고 DI를 통해 의존성이 주입된 객체로 관리한다. 즉, 애플리케이션 컴포넌트의 중앙 저장소이다. BeanFactory는 빈 설정 소스로부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. ..
나에게 2019년은 '우아한테크코스'가 전부였다. 그리고 2019년은 많은 것을 새롭게 경험한 해였다. 운 좋게 만난 '우아한테크코스' 우아한테크코스를 알게되었을 때 별 생각이 없었다. 그냥 알고리즘문제나 풀어볼까라는 심정으로 지원하려고 결심했다. 그러나, 우아한테크코스 지원서류를 작성하면서 잠시 멈칫했던 질문이 있었다. 우아한테크코스에 참여하려는 이유는 무엇인가요? * 우아한테크코스는 자기주도적으로 학습해야 하며, 동료들과 공동으로 학습하고 같이 성장하는 방식으로 진행합니다. 지금까지 우리가 흔히 알고 있는 교육 과정보다 훨씬 더 힘들 수 있습니다. 또한 8개월이라는 시간이 여러분의 삶에 상당히 중요한 시간일 수 있습니다. 이런 중요한 시기에 우아한테크코스 교육 과정에 참여하고 싶은 이유는 무엇인가요?..
Thread Safe 개념 Thread Safe란 멀티 스레드 프로그래밍에서 함수, 변수, 객체 등이 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없다는 것을 뜻합니다. 하나의 함수가 한 Thread로부터 호출되어 실행 중일 때 다른 Thread가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 의도한대로 나와야합니다. 제일 좋은 방법은 자원을 공유하지 않는 코드를 작성하는 것이 좋습니다. Thread Safe하지 않은 코드 작성하기 수열을 생성하는 SequenceGenerator를 구현합니다. 이 코드는 currentValue를 Update하는데, Thread가 동시에 접근할 경우, 의도하지 않은 결과가 나올 수 있습니다. 예를 들어, curren..
OAuth 참여자 Resource Owner, User(사용자) Service Provider(카카오, Github...) Client, Consumer(우리가 만드는 서비스) OAuth 참여자의 역할 Resource Owner Service Provider에 계정이 존재하며, Client를 이용하려는 사용자. Service Provider Authorization Server(인증서버) User를 인증하고, Client를 인증하는 서버 Resource Server(리소스 서버) Open API를 제공하는 서버 Client OAuth인증을 사용해 Service Provider의 기능을 사용하려는 애플리케이션, 웹 서비스 OAuth의 흐름 +--------+ +---------------+ | |--(A)..
보통 단위 테스트는 빠르게 실행되며 불편하지 않습니다. 하지만 프로젝트가 커지면 통합테스트가 많은 시간을 잡아먹는 경우가 있습니다. 그래서 통합테스트와 단위테스트를 분리하는 것이 좋습니다. 기본 Java 프로젝트 구조 build.gradle plugins { id 'org.springframework.boot' version '2.2.2.RELEASE' id 'io.spring.dependency-management' version '1.0.8.RELEASE' id 'java' } group = 'gradle' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations { developmentOnly runtimeClasspath { ex..
웹에서 알림을 구현하는 방식들 Polling 클라이언트가 주기적인 시간으로 서버에 요청하여 데이터 상태를 확인하는 방식입니다. 서버쪽의 데이터 상태가 자주 변경되지 않는다면 불필요한 요청 및 응답이 발생합니다. Long Polling Polling 방식과 비슷하지만 서버로 요청하여 일정한 시간동안 연결을 열어두고 서버로부터 응답을 받는 방식입니다. Polling 보다 서버로 잦은 요청을 하지 않는 장점이 있습니다. Streaming 클라이언트가 한번 요청 이후에 서버는 응답을 완료하지 않고 스트림을 통해 이벤트가 발생할 때마다 데이터를 전송합니다. 무한하게 혹은 지정한 시간만큼만 연결을 유지한 상태로 데이터를 받을 수 있습니다. WebSocket 클라이언트와 서버가 양방향 통신을 할 수 있도록 지원하는 ..
SSL의 의미 SSL은 보안 소켓 계층의 약자로, (Secure Socket Layer) 입니다. 1990년대 중반 넷스케이프가 처음 개발한 것으로 데이터를 안전하게 정송하기 위한 인터넷 통신 규약 프로토콜입니다. SSL 1.0은 일반에게 공개되지는 않았다가, SSL 2.0에 심각한 결함이 있었고, 마침내 이런 결점들을 극복하고 SSL 3.0은 1996년 이후 생겨난 프로토콜들을 위한 기반을 닦았습니다. TLS와 SSL의 관계 1999년, SSL 프로토콜의 차세데 버전인 TLS(Transport Layer Security)가 등장 했습니다. TLS 프로토콜은 IETF에 의해 표준화됐으며, SSL 3.0 사이에 극적인 차이가 없습니다. 두 프로토콜은 지속적으로 업데이트되는 일련의 프로토콜들을 형성하며 SS..