본문 바로가기

전체 글

(175)
Spring의 DI와 IoC에 대해 설명할 수 있나요? DI : Dependecy Injection 번역하면 의존성주입 이다. 예시를 들어서 설명해보자 컴퓨터가 있다. 컴퓨터를 살 때, 조립식 컴퓨터가 있고 그냥 완성품 컴퓨터를 살 수 있다. 조립식 컴퓨터를 산다고 할 때, 각각의 부품을 사서 컴퓨터에 끼우는 방식이다. 여기서 각각의 부품을 D : Dependency라고 볼 수 있다. 그리고 끼우는 과정을 I : Injection이라고 할 수 있다. 현실에서 부품을 사서 조립하는 과정을 돈 주고 맡기기도 하는 것 처럼 Spring이 조립을 해준다. 이 기능을 Spring의 핵심기능 중 하나인 DI라고 볼 수 있다. IoC : Inversion of Control 일체형 프로그램은 큰 단위로부터 작은 단위로 생성이 된다. 하지만 결합형 프로그램 (위에서 예시로..
Junit5에서 parmeter를 이용한 Test실행하기 Junit4와 Junit5에서는 parameter를 이용한 Test를 실행할 때 조금 다르다. Junit 4 : JunitParams 이용 @RunWith(JunitParams.class) public class EventTest { @Test @Parameters public void testFree(int basePrice, int maxPrice, boolean isFree) { Event event = Event.builder() .basePrice(basePrice) .maxPrice(maxPrice) .build(); event.update(); assertThat(event.isFree()).isEqualTo(isFree); } private Object[] parametersForTestF..
Transaction에 대해서 아시나요? 모르겠습니다. 내 대답이었다. 내 첫 면접에서의 질문 중 하나였다. 쓰는 것도 많이 봤지만 정확히 어떤 기능인지 몰랐고 굳이 알려고 하지도 않았었다. 공부해야할 것들이 엄청나게 많다. 그리고 이제 결과만 쫓는 형태가 아니라 HOW를 알아야 한다고 생각이 든다. Transaction 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미 즉, 병행 제어 시 처리되는 작업의 논리적 단위 모든 작업이 성공한다면 완료 작업 상태를 모두 반영하고, 이것을 Commit, 반면, 하나라도 실패하게 된다면 모든 사항을 폐기하고, 이것을 Rollback. Transaction의 4가지 성질 ACID ✔️ Atomicity 원자성 : 한 트랜잭션 내의 실행 작업은 하나의 단위로 처리 즉, 모두 성공..
SSR과 CSR 지금까지 사이트를 만들면서 api의 필요성을 크게 느끼지 못했다. 그 이유는 항상 SSR로 페이지를 만들어서 내가 html페이지도 만들고 백엔드도 만들었기 때문이다. 하지만 추후에 프론트와 협업을 하려면 api의 필요성을 느꼈고 이 과정에서 SSR이 뭔지 CSR이 뭔지에 대해서 공부했다. 먼저 SSR은 서버측에서 랜더링한 페이지를 보내주는 방식이다. 쉽게 말해서 서버에서 완성된 html 파일을 가지고 있는 방식이다. 그리고 나는 지금까지 SSR방식만 사용해왔다. 그리고 CSR방식은 서버에서 완성된 html파일이 아니라 클라이언트 측에서 js파일을 다운받아 랜더링하는 방식이다. SSR과 CSR의 차이 1. 첫 페이지 로딩시간의 차이 - SSR은 완성되어있는 페이지를 불러오기 때문에 빠르다. 하지만 CSR은..
JSON 응답에서 한글 깨질 때 해결 방법 @Controller @RequestMapping(value = "/api/events", produces= MediaTypes.HAL_JSON_VALUE) @RequiredArgsConstructor JSON 응답에서 한글응답이 깨지는 현상이 발생했다. 스프링부트 버전 2.2.5 이상은 MediaTypes.HAL_JSON_UTF8_VALUE -> MediaTypes.HAL_JSON_VALUE 로 변경 되었다. 그래서 응답을 보면 아래 그림과 같이 깨지는 형태를 볼 수 있다. @Controller @RequestMapping(value = "/api/events", produces = "application/hal+json; charset=UTF-8") @RequiredArgsConstructor 위에서..
Rest API가 뭘까요? Rest API라는 단어는 많이 들어봤지만 이게 뭔지는 몰랐다. 그래서 아주 가볍게 소개하는 영상을 보고 이 글을 쓴다. Rest API는 개발자들이 정보들을 주고받는 일종의 형식이라고 볼 수 있다. 먼저 API는 Application Programming Interface의 약자로 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단이다. 외부 API(알라딘, 카카오 등) 을 이용해봤으면 쉽게 알 수 있다. 정해진 형식을 요청하면 API에서 알아서 원하는 결과값을 반환해준다. 그렇다면 RestAPI는 뭘까? RestAPI는 각 요청이 어떤 동작이나 정보를 위한 것 인지를 요청의 모습 자체로 추론 가능한 형식이다. 예를 들자면 get은 정보를 읽기, post는 새로운 정보를..
MVC 패턴이 뭘까요? MVC 는 Model, View, Controller의 앞글자를 딴 패턴이다. 쉽게 말해서 유지보수가 편리하게 만든 코드 구성 방식이다. Model은 데이터와 관련된 일을 하는 곳 View는 사용자한테 보여지는 부분 Controller는 Model과 View를 이어주는 부분이다. MVC 패턴에 맞춰서 코드를 구성하게 되면 각각 맡은 일에만 집중할 수 있게 된다. 효율적인 분업이 가능하다. 서로가 분리되어서 각자의 역할에 집중할 수 있고 이로 인해서 유연성이 증가하고, 중복코딩을 지양할 수 있다. 아래 5가지 규칙을 지키면서 코드를 짜면 자연스레 MVC 패턴을 지키면서 코드를 짤 수 있다고 한다. 1. Model 내부에 Controlller와 View에 관련된 코드가 있으면 안된다. 2. View 내부에는..
구글 애널리틱스를 사용해서 내 사이트 분석하기 이번에는 구글 애널리틱스를 이용해서 내 사이트를 분석해보겠다. 시간별 사용자 수, 국가별 세션, 실시간 접속자 수 등 여러 기능을 가지고 있다. https://analytics.google.com/analytics/web 위 사이트에 접속해서 계정을 만든다. 어려울 건 없고, 속성 세부 정보에서 시간대와 통화를 대한민국으로 설정하면 된다. 그리고 고급옵션보기에 내 URL을 입력한 후 만들면 태그가 생성된다. 생성된 태그를 head에 넣어주면 설정 완료다. 이렇게 설정하고 잘 적용됐는지 실시간 접속자 수를 통해서 확인할 수 있다. 내 사이트에 접속한 후에 애널리틱스의 실시간 개요를 들어가 보면 1이 떠있으면 설정 완료다. 이제 내 사이트의 여러 분석을 쉽게 볼 수 있게됐다.