프로젝트를 진행하다보면 당연하게도 개발/테스트/배포 실행 설정이 달라지게 된다. 이를 스프링에서는 yml파일 하나로 간결하게 설정할 수 있는데, 예를 들면 아래와 같다. spring: profiles: active: dev # 개발 서버 설정 spring: config: activate: on-profile: dev # 테스트 서버 설정 spring: config: activate: on-profile: test # 배포 서버 설정 spring: config: activate: on-profile: server 여러 설정파일을 나눠 작성할 필요 없이 이렇게 작성한 뒤에, 가장 위 active의 값만 원하는 대로 바꾸면 된다. 단계별로 사용하는 DB나 시크릿 키 등을 한 눈에 관리할 수 있어서 편리하다.
먼저 테스트 케이스의 5대 원칙이다. Fast - 빨라야 한다. Independent/Isolation - 실행 순서에 독립적이어야 한다. Repeatable - 어떤 환경에서도 반복해서 작동, 같은 결과를 내보내야 한다. Self-Validating - 자체적으로 검증 결과를 판단할 수 있어야 한다. Timely - 기능 구현 직전에 작성해야 한다. 혹은 기능의 업데이트에 맞춰 즉시 개선해야 한다. JUnit JUnit은 스프링에서 지원하는, 가장 많이 사용되는 테스팅 프레임워크이다. Spring Boot Initializr에서 Gradle 기반의 프로젝트를 생성하면 기본적으로 테스트 패키지가 생성되며, JUnit을 포함한 testImplementation 'org.springframework.boot..
목차 Transaction 더 이상 쪼갤 수 없는 일처리의 최소 단위 -> 모두 성공하거나 모두 실패해야 함 안정성을 보장하기 위해 다음의 원칙을 지킨다. 원자성 - 트랜잭션은 쪼갤 수 없으며 모두 성공하거나 모두 실패해야 한다. 일관성 - DB에 대한 비즈니스 로직이 트랜잭션 전후로 일관되어야 한다. 고립성 - 모든 트랜잭션은 다른 트랜잭션의 영향을 받지 않는다. 지속성 - 성공한 트랜잭션의 결과는 안정적으로 보존되어야 한다. 작업 도중 시스템 오류가 발생해도 마찬가지다. 커밋 - 모든 작업을 정상 처리하겠다고 확정하는 명령어. 결과를 DB에 저장하고 트랜잭션을 종료한다 롤백 - 작업 중 문제가 발생하여 트랜잭션 처리과정의 모든 변경사항을 취소하겠다고 확정하는 명령어이다. JPA 역시 Hibernate..
목차 JDBC 먼저 JDBC는 영속성을 보장하기 위해 자바에서 자체적으로 제공하는 기능이자, DB 커넥터이며 특징으로는 다양한 DB Driver들의 작성방식을 통일시켜 표준화했다는 점이 있다. 자바의 모든 데이터 액세스는 내부적으로 이 JDBC를 사용하고 있으며, 앞으로 알아볼 기술도 마찬가지다. Spring JDBC 이 JDBC에는 특유의 단점이 있었는데 바로 DB 연결과 SQL 사용, Data Mapping 등의 모든 과정을 개발자가 직접 입력해주어야 한다는 점이었다. 이는 개발 생산성 저하로 이어지는 치명적인 문제였으며, Spirng JDBC는 이 반복적인 작업에서 개발자를 해방시켜주었다. DB 커넥션을 가져오는 DataSource를 빈으로 등록하기만 하면, 실행할 SQL과 파라미터 등을 넘겨주는 ..
DTO란 이름 그대로 프로세스 사이에서 데이터를 전송하는 객체이다. 클라이언트 - 서버 간의 반복된 요청/응답에 따른 지연시간을 줄이기 위해 여러 요청에 대한 데이터를 한 번에 담는 객체로서 도입되었다. 조금 더 구체적으로는 클라이언트 - 서버 간의 요청/응답에 따르는 반복되는 직렬화를 맡아하는 객체라 할 수 있으며, DTO를 구성하는 원칙은 다음과 같다. DTO는 가능하면 POJO(Plain Old Java Objects)로 생성한다. 순수하게 데이터를 저장하는 역할과, 데이터에 대한 getter(), setter() 메서드만을 가진다. 저장, 검색, 직렬화, 역직렬화 로직을 제외한 어떠한 비즈니스 로직도 갖지 않는다. 직렬화 - 서버가 DTO 같은 Java 객체를 JSON 형식으로 변환하는 것 역직렬..
ResponseEntity는 HttpEntity를 상속받는 클래스로서, HTTP 응답의 상태 코드, 헤더와 바디를 포함한다. 간단하게 말하면 사용자의 요청에 대한 서버의 응답을 한 번 감싸주는 역할을 하며, 조금 더 구체적으로 말하자면 결과 데이터와 상태 코드 등을 직접 제어하는 역할을 한다. 바디뿐 아니라 응답 상태 코드와 헤더 값을 설정할 수 있어 세밀한 제어가 필요한 경우 사용된다. 추가로 헤더와 바디에는 각각 HTTP header - 요청/응답에 대한 요구사항 HTTP body - 요구사항에 관련된 내용 이 적혀있다. 추가의 추가로 상태코드는 앞자리에 따라 각각 100번대 - 조건부 응답, 요청을 받았으며 작업을 계속한다. 사실상 사용되지 않음 200번대 - 요청 수신 및 이해와 승낙 성공 300..
REST(ful) API API란 쉽게 말해 클라이언트를 위해 서버와의 소통법을 적어둔 매뉴얼이다. 이 매뉴얼의 디자인에는 BEST Choice가 존재하며, 이를 REST API라 부른다. 중간 내용을 건너뛰고 간단하게 정리하면 REST API란 규칙을 통한 리소스 중심의 올바르고 유일한 엔드포인트 작성 적절한 HTTP 응답 코드와 리소스에 대한 정보 기재 CRUD에 적합한 HTTP 메서드(POST, GET,...) 사용 응답에 리소스에 대한 링크 삽입 을 모두 만족하는 API를 말한다. Spring MVC의 REST API 엔드포인트(애너테이션) @RestController = @Controller + @ResponseBody, 컨트롤러 클래스에 달아준다. @Request/ResponseBody - H..
DI(의존관계 주입)는 특정 객체가 의존할 객체나 메서드를(즉, 의존관계를) 해당 객체 외부에서, 정확하게는 스프링 컨테이너에서 주입받는 디자인 패턴이다. 여기서 A가 B에게 의존한다는 말은 B의 구성이나 로직이 변하면 A에게 영향을 끼칠 가능성이 있는 관계라는 뜻이다. 이어서 주입이란 의존성을 사용하려는 객체에게 전달하는 것이라 받아들이면 되며, 디자인 패턴이란 공통적인 문제에 대한 재활용 가능한 솔루션이라 생각하면 된다. 또한 스프링 컨테이너란 객체의 생명주기를 관리하는 모듈이며, 스프링 컨테이너가 관리하는 객체를 빈(Bean)이라 부른다. 이는 스프링의 핵심 원칙인 IoC를 구현하는 수단이기도 하며, 객체의 설계와 사용이라는 관심사를 분리해 느슨한 결합으로 의존도를 낮추는 것이 그 목적이다. 구체적..
목차 CI, CD, 배포 자동화는 쉽게 말하면 애플리케이션 빌드 및 배포의 자동화를 통해 고객에게 더 짧은 주기로 제품을 제공하는 방식을 아우르는 개념이다. 하나씩 간결하게 보자. CI - Continuous Integration CI는 직역하면 지속적 통합이라는 의미가 된다. 여기서 통합이란 일반적으로 기획부터 테스트까지를 아우르는 개발자의 각 작업에 대한 통합이자 소스코드와 버전, 작업환경의 통합을 가리키며, 지속적이라 함은 코드의 변경사항이 지속적으로 빌드 및 테스트된 뒤에 공유 레포지토리로 통합되는 것을 의미한다. CD - Continuous Delivery or Continuous Deployment CD는 약어에 따라 지속적 제공, 혹은 지속적 배포라는 의미를 갖는다. CI 이후의 추가단계, ..
면접 답변용으로 간결하게 정리. Java를 사용하는 이유 객체지향 진영의 대표적인 언어이다. 캡슐화(데이터를 클래스로 묶어 사용, 제한자를 통한 정보 은닉), 상속(재사용성 증가, 단일 상속만 가능- 죽음의 다이아몬드) 추상화(쉽게 말해 상속의 반대, 공통사항을 추출 - 중복 코드 제거), 다형성(오버라이딩@Override, 오버로딩) JVM을 이용해 운영체제에 독립적으로 구현 및 실행할 수 있다. 역시 운영체제에 독립적인, 자바API를 사용한 멀티스레드 구현 GC를 통한 자동 메모리 관리 -> 개발속도의 증가 -> 비용 감소 자바, 리눅스, MySQL등이 기본적으로 무료이기 때문에 비용이 적게 든다. 수많은 레퍼런스에서 보장받는 안전성 및 JVM의 직접적인 메모리 관리에 따른 높은 보안 Spring을 ..
- Total
- Today
- Yesterday
- java
- 야경
- 백준
- 유럽여행
- 유럽
- a6000
- spring
- 세계여행
- 중남미
- 지지
- 리스트
- 여행
- 파이썬
- 알고리즘
- 세계일주
- Algorithm
- 동적계획법
- 남미
- 맛집
- Backjoon
- 스트림
- 칼이사
- RX100M5
- 기술면접
- 스프링
- Python
- 자바
- 세모
- BOJ
- 면접 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |