개발/Spring 30

[Spring] LogBack 설정

Spring LogBack 설정하기 이번 포스팅에서는 LogBack은 무엇인지, 그리고 어떤 설정을 할 수 있는지 자세하게 알아보려 합니다. Logback이란? LogBack은 가장 많이 사용되고 있는 로깅 프레임워크 중 하나입니다. Logback은 이전에 많이 사용되고 있던 Log4j의 대안책으로 나온 slf4j와 그 구현체인데, slf4j는 패시드(Facade)패턴으로 구현체의 종류와 상관없이 일관된 로깅 코드를 작성할 수 있기 때문에 범용적입니다. LogBack의 구성요소로는 Logger, Appender, Encoder 3가지가 있으며 다음과 같은 역할을 합니다. Logger: 실제 로깅을 수행한다. Level 속성으로 출력할 로그의 레벨을 정한다. Appender: 로그 메세지가 출력될 대상을 ..

개발/Spring 2020.12.31

[Spring 프로젝트] Interceptor로 request, response body json 값 로깅하기

Spring Logging (Interceptor로 Request, Response body json 값 로깅하기) 스프링 프로젝트를 하면서 기존에는 LoggingAspect를 만들어서 Aspect파일에서 parameter값과 body값을 찍어주고 있었다. response 값도 찍어주기 위해 여러가지 찾아보면서 공부하던 와중에 Filter와 Interceptor, AOP의 구조를 다시 공부하는데 Interceptor의 인자로 HttpServletRequest, HttpServletResponse가 들어오는 것을 보고 response, request 로그를 Interceptor로 찍어야 하는 것이 맞는 구조라는 것을 그제야 깨달았다. 1. Filter, Interceptor, AOP 구조 아래 갓대희님 블..

개발/Spring 2020.12.09

[Spring 프로젝트] Annotation 동작 원리와 사용법

Annotation 동작 원리와 사용법 Spring Boot를 사용하다 보면 @Component, @Controller, @Repository, @Transactional, @Aspect 등 다양한 어노테이션을 사용하게 된다. 그럼 이런 어노테이션이 실제로는 어떻게 동작하는 것인지, 내가 만약 새로운 어노테이션을 만들어서 사용하고 싶다면 어떻게 하면 되는 것인지에 대해 알아보자. 1. Annotation 이란? 우선 어노테이션 자체는 주석과도 같다. (실제로 번역기를 돌려도 주석으로 나온다.) 즉, 코드 사이에 주석처럼 쓰이면서 특별한 의미, 기능을 수행하도록 하는 기술로 프로그램에게 추가적인 정보를 제공해주는 메타 데이터이다. 2. 어노테이션의 용도 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를..

개발/Spring 2020.12.07

[Spring 프로젝트] AOP Logging (Post 메서드의 Json Body 값 로깅하기)

Logging AOP - Json으로 들어온 Request Body값 로깅하기 테스트 하다보니 기존에 추가했었던 로깅 Aspect 에서는 Parameter값을 로깅하는 것만 추가했어서 Post 메서드에서 들어오는 json body값을 로깅하고 있지 않았다. 그러다보니 Post 메서드에서 body값에 들어온 것을 확인하려고 팀원이 직접 컨트롤러나 서비스단에서 로그를 찍고 있었던 것을 발견하게 되었고, 이 부분을 개선하기 위해 Logging Aspect에 추가해두어야 겠다는 생각을 하게되었다. 기존 Logging AOP 기존 로깅 자료 기존의 로그는 위 포스트에서 정리했었는데, LogAspect 파일에서 실제 로깅 하는 부분은 아래와 같았다. @Aspect @Component public class Logg..

개발/Spring 2020.12.04

[Spring 프로젝트] Mybatis에서 Insert, Update Batch 처리하기

Mybatis insert, update batch 처리하기 Mybatis에서 insert, update를 하면서 여러개를 한꺼번에 넣거나 업데이트 해야 하는 경우가 있다. 배치 처리를 하지 않고 서비스를 여러번 호출해서 하게 되면 두 세개야 금방 처리할 수 있지만, 넣어야 하는 값들이 커지면 서비스에서 소모되는 시간이 길어 감당이 안될 수 있다. 이 문서에서는 배치 처리를 해야 할 경우 mapper interface와 mapper xml파일을 어떻게 사용하면 되는지에 대해 설명한다. 1. Mapper Interface public interface StudyMaterialMapper { ... public void insert(StudyMaterial studyMaterial); public void ..

개발/Spring 2020.12.02

[Spring 프로젝트] Junit5 테스트 코드 작성하기 (Junit4와 차이점 정리)

Junit 5 테스트 코드 작성 가이드 해당 문서는 Junit 5 테스트 코드 작성 가이드에 관한 문서입니다. Junit 4와 Junit 5의 차이점을 알아보고 Junit5 유저 가이드를 공부하며 제대로 테스트코드를 작성하기 위해 만들어진 문서입니다. Junit 5 특징 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage Junit4가 단일 jar였던 것에 반해, Junit5는 Junit Platform, Junit Jupiter, Junit Vintage 모듈 세 가지로 구성되어 있습니다. Junit Platform JVM에서 동작하는 테스트 프레임워크입니다. 테스트를 발견하고 계획을 생성하고 결과를 보고하는 TestEngine 인터페이스를 정의합니다...

개발/Spring 2020.11.20

[Spring] 컴포넌트 스캔

Spring [Spring] 컴포넌트 스캔 자동 주입과 함께 사용하는 추가 기능이 컴포넌트 스캔이다. 컴포넌트 스캔은 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능이다. 설정 클래스에 빈으로 등록하지 않아도 원하는 클래스를 빈으로 등록할 수 있으므로 컴포넌트 스캔 기능을 사용하면 설정 코드가 크게 줄어든다. @Component 애노테이션으로 스캔 대상 지정 스프링이 검색해서 빈으로 등록할 수 있으려면 클래스에 @Component 애노테이션이 붙어야 한다. @Component 애노테이션은 해당 클래스를 스캔 대상으로 표시한다. @Component 애노테이션을 붙인 클래스만 컴포넌트 스캔 대상에 포함이 되는 것은 아니다. 다음 애노테이션을 붙인 클래스 또한 컴포넌트 스캔 대상에 포함된다. 아래 애노..

개발/Spring 2020.11.17

[Spring] 스프링 의존 자동 주입 (Auto Injection)이란?

Spring 스프링 의존 자동 주입 (Auto Injection) 앞에 Spring DI가 무엇인지 공부하며 Autowired의 사용법을 잠깐 살펴보았다. 이에 대해 더 자세히 알아보자. @Autowired 어노테이션을 이용한 의존 자동 주입 스프링에서 자동 주입을 설정하려면 @Autowired 어노테이션이나 @Resource 어노테이션을 사용하면 된다. Resource 어노테이션은 자바에서 제공하는 어노테이션으로 스프링은 @Resource 뿐만 아니라 자바에서 제공하는 @Inject 어노테이션 또한 지원한다. 단, 스프링에서는 주로 @Autowired를 사용하므로 해당 어노테이션에 관하여 자세히 다루어 보도록 하자. 자동 주입 기능을 사용하면 스프링이 알아서 의존 객체를 찾아서 주입한다. 자동 주입 기..

개발/Spring 2020.11.16

[Spring 프로젝트] 2. ERD 설계하기

Spring [스프링 프로젝트] 2. ERD 설계하기 해당 문서는 PMC 스프링 프로젝트에서 ERD를 설계하며 진행했던 내용을 정리한 문서입니다. 1. 기획에서 필요한 테이블과 컬럼 정리하기 우선 UX 설계한 내용과 기능 리스트를 보며 어떤 Entity가 필요할 지 생각해본다. 스터디 전에 각자 필요한 테이블과 컬럼들이 어떤 것이 있을지 생각해보고, 회의에서는 ERD Cloud라는 툴을 이용하여 온라인으로 바로 화면을 공유하며 테이블을 함께 설계했다. (집단지성의 힘) Study 제일 먼저 필요한 테이블은 Study 테이블. 어떤 스터디들이 있는지 리스트와 상세 목록을 볼 수 있는 페이지가 있고, 연결된 테이블들이 가장 많을 테이블이다. 필요한 컬럼에는 스터디 ID값과 제목, 정렬과 관리를 위한 데이터가..

개발/Spring 2020.11.16

[Spring 프로젝트] 1. 프로젝트 기획하기

Spring 프로젝트 기획하기 해당 문서는 PMC 스프링 프로젝트를 기획하며 진행했던 내용을 정리한 문서입니다. 1. 프로젝트 주제 선정하기 첫 스터디 모임. 첫 날은 간단히 스프링 프로젝트를 진행하면서 어떤 식으로 진행할 것인지에 대한 논의와 토이 프로젝트 주제를 선정했다. 주제는 회의하다가 15분간 생각해보고 그 자리에서 바로 어떤 주제로 하면 좋을지, 어떤 기능이 들어가면 좋을지를 대략적으로 생각해보고 공유했다. 첫 번째로 나온 주제는 카페 리뷰시스템으로, 대략적인 기능리스트는 아래와 같았다. 카페 쿠폰 발급 카페 별점 기능, 리뷰 기능 (사진/글 리뷰) 분위기 / 인스타용 / 스터디용 등의 그룹을 나누어 관리 가격정보를 1단계, 2단계, 3단계로 분류해서 보여주기 위치로 검색할 수 있는 기능 메뉴..

개발/Spring 2020.11.12