목록자바/스프링 튕튕 (7)
오봉이와 함께하는 개발 블로그
Artineer Spring 7주차 강의노트 데이터 영속화 H2는 메모리에서만 동작되기 때문에 실제 데이터로 사용할 수 있도록 영속화를 해야 한다. Docker 개발환경에 따라 종속적인 프로그램을 '컨테이너'에 관리할 수 있다. 컨테이너에는 어플리케이션뿐 아니라 환경변수같은 것들 모두 저장된다. 원래 작동하던 호스트 환경에서 다른 황경으로 옮겨야 할 때 문제가 발생할 수 있지만, Docker를 통해 컨테이너로 작동 시키면 원래 호스트에 대한 시스템의 의존성이 사라지게 된다. Docker는 image를 통해 버전 관리가 되기 때문에 새로운 버전을 배포했을 때 문제가 발생하면 다시 전 버전의 image 배포를 통해 기존보다 더 간단하게 해결할 수 있다. docker를 통해 image를 다운 받..
Artineer Spring 6주차 강의노트 Loagging 실제 운영되는 시스템은 무조건 이슈가 발생한다. 로그를 통해 과거 발생한 이슈를 알 수 있고 해결하기 위해 로그는 매우 중요하고 무조건 필요하다. 로그가 쌓이게 되면 엄청난 정보이기 때문에 꼭 필요한 로그만을 사용해야 하는데 필요한 로그만을 추출하기는 너무 어렵다. 다양한 모니터링 툴이 있지만 셀프로 공부하자. 우리는 실제로 로그를 사용하기 위해 정확한 로깅을 하는 방법을 배운다. @Slf4j Lombok에 라이브러리 log.info를 통해 로그를 볼 수 있다. Api 서버에서 효과적으로 로그를 남기는 방법은 맨 처음 요청이 들어온 값과 응답 값을 남겨주는 것 이상이 발생했을 때 입력값과 반환값을 확인하면 문제를 큰 틀안에서 발견할 수 있다. ..
Artineer Spring 5주차 강의노트 Remind Q1. 의존성 주입을 할 때 사용하는 스프링 어노테이션은 ? @Autowired 스프링은 의존성을 관리하기 위해 만들어진 프레임워크 @Autowired를 통해 의존성 주입 필드나 생성자레벨에 넣어주면 스프링 컨테이너에 빈들이 등록되고 빈들을 바로 주입 받아 사용한다. @Q2. @Autowired 어노테이션이 필드에 존재하냐, 생성자에 존재하냐에 따라 필드주입, 생성자주입으로 갈린다. 스프링은 기본적으로 생성자 주입을 선호하는데 그 이유는? 순환참조 이슈가 있기 때문 순환참조란 a와 b 두 객체가 있을 때 a는 b를 의존하고 있고 b도 a를 의존하는 상황 객체지향에선 좋지 않은 구조 a객체를 만들 때 b가 필요, b를 만들 때 a가 필요하기 때문에 ..
Artineer Spring 4주차 강의노트 테스트 테스트는 개발자들에게 매우 중요하다. 테스트 패키지는 소스(원본) 패키지와 동일한 구조, 테스트하는 클래스 파일은 대상이 되는 클래스파일 뒤에 test를 붙여 만든다. 각 layer에 대한 특성이 다르기 때문에 테스트 코드를 작성하는 방법이 다 다르다. @Test : 테스트 코드로 동작시키는 어노테이션 테스트 코드에 들어가는 함수 명은 어떤 것을 테스트 하려는지 명시를 해야 한다.(한글로 작성 가능) 테스트 코드는 무언가 주어지고(given), 실행 했을 때(when) 어떤 결과가 나와야 한다.(then) 라는 패턴으로 작성 유닛테스트 기능, 함수가 정상적으로 동작 하는지 검증하기 위한 코드 테스트 자체의 목적도 있지만 함수의 동작을 명시하는 문서의 역..
artineer_week_lecture_3 JPA JPA는 ORM형태의 기술이다. 기존에는 DB에 대한 의존도가 높기 때문에 DB Query에 의한 시스템을 구축하였다 자바는 객체지향 언어이기 때문에 DB와 다른 용도로 사용해야 한다. 그래서 ORM이라는 기술이 발전하게 되었다. ORM(Objective Relation Mapping) : Java의 객체와 DB의 Relation을 Mapping한다 하여 ORM이다. 벤더에 독립적으로 만들 수 있어 DB 프로그램과 분리되어 의존도가 떨어진다. JPA implementation : implementation 'org.springframework.boot:spring-boot-starter-data-jpa' H2 Database : 메모라에 저..