시작하기 앞서, 이 글을 쓰기 이전에는 JUnit을 활용해 본 적이 없다.나는 지금까지 API 구현하면 서버 돌려서 테스트 하거나 Debug 모드로 테스트를 해왔던 것이다 😱spring boot에 대해서 공부하면서 controller, service, repository 별로 테스트가 필요했고 JUnit을 활용하기로 결심했다. 정의Java 프로그래밍 언어를 위한 단위 테스트 프레임워크이다. 특징테스트를 작성하고 실행하는데 사용되는 오픈소스 프레임워크이다.테스트 방법을 식별하기 위한 어노테이션을 제공한다.예상 결과를 테스트하기 위한 Assertions 를 제공한다.테스트 실행을 위한 테스트 러너를 제공한다.결과에 따른 피드백을 즉시 확인할 수 있다. 사용spring-boot-starter-test 라이브..
시작하기 앞서, 내가 EnvironmentPostProcessor 인터페이스를 사용하게 된 이유는 다음과 같다. application.yml 파일에 KMS 키를 활용한 암호화 된 정보인 환경변수가 있었다. 그리고 해당 정보는 어플리케이션이 구동되기 전에 복호화가 되어야 했다. application.yml 예시 spring: datasource: username: #{cipherText} 정의 Allows for customization of the application's Environment prior to the application context being refreshed. 사용 방법 classpath 하위 경로에 META-INF/spring.factories 파일을 생성한다. classpath:..
대칭 암호 (Symmetric Cipher) 암호화 키와 복호화 키가 같은 암호 방식이다. 특징 암·복호화 키가 동일하기 때문에 송수신자가 모두 비밀리에 보관하고 있어야 한다. 비대칭 암호화 방식보다 단순하고 암호화 속도가 빠르다. 데이터를 변환하는 방법에 따라 블록 암호와 스트림 암호로 구분된다. 비밀키, 관용키, 단일키 암호화 방식이라고도 한다. 블록 암호 : 평문을 일정한 단위(블록)로 나누어서 단위마다 암호화 과정을 수행하여 암호문을 얻는 방법이다. 스트림 암호 : 평문을 비트 혹은 바이트 단위로 암호화 한다. 대표 알고리즘 AES (Advanced Encryption Standard) DES (Data Encryption Standard) 비대칭 암호 (Asymmetric Cipher) 암호화 ..
docker-compose 파일에 환경변수를 설정하는 방법은 여러가지가 있다. 여러 방법 중 나는 호스트의 환경변수를 컨테이너 내부에 설정하는 방법을 작성해본다. 1. 먼저 Host 환경변수를 등록해준다. export USER=seyeong export PASSWORD=1234 2. docker-compose 를 이용하여 컨테이너를 띄운다. docker-compose.yml 예시 ( 아래 예시가 좀 만족스럽진 않지만 그래도 작성해본다. nginx 이미지에 환경 변수가 저렇다니 😒) version: "3" services: nginx: container_name: nginx image: nginx:latest ports: - "8080:5000" environment: - NAME - PASSWORD 3...
Thread를 알기 전에 프로세스(Process)부터 알아보자. 프로세스(Process)란 실행 중인 프로그램(program)이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 Thread로 구성되어 있다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 Thread이다. 모든 프로세스에는 최소한 하나 이상의 Thread가 존재하며, 둘 이상의 Thread를 가진 프로세스를 멀티쓰레드 프로세스(multi-threaded process) 라고 한다. 상태 NEW Thread가 생성되고 아직 start()가 호출되지 않은 상태 RUNNABLE 실행 중 또는 실행 가능한 상태 BL..
Stack 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO(Last In First Out)구조로 되어 있다. 구현 방식 class Main { public static void main(String[] args) { Stack stack = new Stack(); stack.push("0"); stack.push("1"); stack.push("2"); while(!stack.empty()) { System.out.println(stack.pop()); //스택에서 요소 하나를 꺼내서 출력 } //결과 2 1 0 } } Queue 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out)구조로 되어 있다. 자바에서 큐는 인터페이스로만 정의해 놓았을 뿐 별도의 클..
StringBuffer, StringBuilder 클래스는 가변(mutable) 클래스이다. StringBuffer StringBuffer클래스는 가변 클래스이기 때문에, 동일 객체 내에서 문자열 변경이 가능하다. StringBuffer의 인스턴스를 생성할 때, 적절한 길이의 char형 배열이 생성되고, 이 배열은 문자열을 저장하고 편집하기 위한 공간(buffer)으로 사용된다. StringBuffer(int length)를 사용해서 StringBuffer 인스턴스에 저장될 문자열의 길이를 지정할 수 있다. 버퍼의 크기를 지정해주지 않으면 16개의 문자를 저장할 수 있는 크기의 버퍼를 생성한다. 문자열 생성 방식 StringBuffer sb = new StringBuffer("hello"); sb.app..
String 클래스는 불변(immutable) 클래스이다. String 클래스는 문자열을 저장하기 위해서 문자형 배열 참조변수(char[]) value를 인스턴스 변수로 정의해 놓고 있다. 인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 이 인스턴스변수(value)에 문자형 배열(char[])로 저장된다. String 클래스는 앞에 final이 붙어 있으므로 다른 클래스의 조상이 될 수 없다. 한 번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, 변경할 수는 없다. '+' 연산자를 이용해서 문자열을 결합하는 경우 인스턴스 내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String 인스턴스가 생성된다는 것이다. 덧셈 연산자('+')를 사용해서 문자열을 결합하는 것은..
컬럼에 배치 할 수 있는 값의 범위를 제어하는 제약 조건으로, 논리 표현식에서 값의 유효 여부를 결정한다. 문법[CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]symbol옵션이며, 제약조건의 이름을 명시한다.최대 길이는 64자이다.expr제약 조건을 각 행에 대하여 TRUE 또는 UNKNOWN(Null 일 경우)으로 평가해야 하는 Bool 표현식으로 지정한다.조건이 FALSE로 평가되면 실패하고 제약 조건 위반(violation)이 발생한다. 특징MySQL 5.7 에서 CHECK 제약 조건을 정의 할 수 있지만, 동작하지 않는다. The CHECK clause is parsed but ignored by all storage engines. MySQL 8.0 에..
AOP (Aspect Oriented Programmint) 관점 지향 프로그래밍 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 여러 모듈에서 공통적으로 사용되는 기능을 분리하여 관리 할 수 있다. 횡단 관심사(cross-cutting concern) 핵심 기능(Core Concern)을 도와주는 부가적인 기능이다. 횡단 관심사를 분리하는 목적은 다양한 모듈에서 공통적으로 사용하기 때문에 중복 코드가 발생하며, 유지보수의 어려움이 있기 때문이다. 핵심 관심사(Core Concern) 비즈니스 로직을 포함하는 핵심 기능이다. 용어 Target 핵심 기능을 담고 있는 모듈로, 부가기능을 부여할 대상이 된다. Advice T..
- Total
- Today
- Yesterday
- 인스턴스변수
- 추상클래스
- Hash
- HashSet
- fail-safe
- 인터페이스
- @conditional
- 티스토리챌린지
- 자동구성
- Red-Black Tree
- spring boot
- nosql
- JPA
- syncronized
- 오블완
- object
- Spring
- 로드 밸런서
- 고정 세션
- HashMap
- Load Balancer
- java
- AutoConfiguration
- 다중화
- Caching
- Sticky Session
- nginx
- fail-fast
- Security
- 정적변수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |