[Spring Boot] Spring-REST-Docs로 자동으로 API 문서화
·
개발/Spring Boot
Spring REST Docs 모든 코드는 Github에 있습니다. REST Docs란? 이름 그대로 REST 문서이다. REST API를 문서화하여 input, output, 파라미터 세부정보 등을 팀원과 공유할 수 있다. REST Docs는 테스트 코드를 통과하여야 문서로 작성되기 때문에 검증된 문서를 작성할 수 있다. REST Docs를 선택한 이유? Spring에서 문서화를 할때 Swagger와 Rest Docs를 많이 사용한다. 개인적으로 Swagger UI가 더 보기 좋다. 그리고 Swagger는 curl을 통해 API를 바로 테스트 해볼 수 있지만 REST Docs는 단순히 문서만 제공한다. 여기까지 보고 나는 Swagger로 해야겠다는 생각을 하고 어떻게 코드를 작성하나 찾아봤다. 근데 S..
[Spring Boot] 오버로딩 언제 할 수 있을까
·
개발/Spring Boot
오버로딩이란 메소드 이름은 같지만 다른 역할을 하는 메소드들을 만드는 것이다. 흔히들 오버라이딩과 오버로딩을 비교하곤 하지만 다른 개념이라 생각하여 따로 정리했다. 나는 개인적으로 오버로딩이란 개념을 좋아한다. 왜냐하면 같은 메소드 이름으로 여러 기능을 하는 메소드를 만들수 있기때문에 메소드 이름 작명의 수고를 덜어준다. 이름을 짓는 건 언제나 창작의 고통이기 때문에 오버로딩을 좋아하게 되었다. 그래서 오버로딩 어디까지 할 수 있는지 알아보기 위해 글을 쓴다. 1. 매개변수가 다를때 가장 보편적인 경우이다. 매개변수가 다를때 오버로딩이 가능하다. (1) 매개변수 갯수가 다를때 public void Method1() {} public void Method1(int a) {} (2) 매개변수 타입이 타를때 ..
[Spring Boot] Mockito란?
·
개발/Spring Boot
1. Mokito Mokito는 단위 테스트를 위한 mocking 프레임 워크이다. 쉽게 말해 가짜 객체인 Mock을 생성해주고 관리하고 검증할수 있도록 지원한다. 구현체가 없거나 의존성을 고려하지 않고 특정 단위만 테스트 할 수 있도록 환경을 만들어준다. 2. Mock객체 여기서 registerComment 메소드를 부르면 CommentDao의 insertComment가 실행되어야 한다고 하자. 이를 위해 테스트를 한다고 했을때 중점으로 볼 부분은 insertComment가 호출이 되었는지 아닌지 이다. 즉, 내부에 어떤 코드가 작성되어있는지는 관심없고 결과가 중요한 것이다. registerComment 메소드의 단위 테스트를 실행하기 위해 Mock객체는 여기서 CommentDao를 가짜로 사용할 수 ..
[Spring Boot] DI 구현 방법 3가지
·
개발/Spring Boot
DI를 구현하는 방법은 필드주입, 세터 주입, 생성자 주입으로 3가지가 있다. 이 3가지에 대해서 간단하게 정리하려고 한다. 먼저 DI를 하면 외부에서 의존성을 주입받기 때문에 (1) 테스트가 용이해지고 (2) 객체간 결합도를 낮추고 (3) 코드의 재사용성을 높인다. 1. 필드 주입 @Controller public class FoodController { @Autowired private FoodService foodService; } 필드에 @Autowired 어노테이션만 붙여주면 의존성이 주입된다. 코드가 간결하지만 프레임워크에 의존적이고 외부에서 수정이 불가하다. 외부에서 수정이 불가하다는 것은 테스트 코드 작성시 객체를 수정수 없다는 말이 된다. 2. 세터 주입 @Controller public..
[Spring Boot] dotenv(.env) 때문에 날려버린 2일
·
개발/Spring Boot
문제 상황 AWS S3 연동을 위해 access key 와 secret key를 발급 받고 연동 시작 로컬 IDE (vscode) 에서는 S3에 정상적으로 작동 문제는 build 후 jar파일 실행시 권한이 없다고 뜸 삽질 과정 구글링이란 구글링은 다 해본듯 하다. 어떠한 것도 해결 되지 않았음. 그러다 문득 application.yml 에 있는 access key와 secret key등 .env 파일에서 받아오는 부분을 하드코딩 해봄 jar파일에서도 S3 연결 성공! 문제는 .env 에서 value값을 받아오는 과정에서 생겼다고 드디어 문제점 파악 문제점 value값에 더블쿼테이션을 쓴게 문제였다. AWS_ACCESS_KEY="envTest" 위처럼 설정했었는데 IDE에서는 정확하게 읽기 때문에 문제점..
[Spring Boot] 어노테이션 정리
·
개발/Spring Boot
@SpringBootApplication Spring Boot를 자동으로 실행시켜주며 @ComponentScan을 통해 Component를 Bean으로 등록시킨다. @EnableAutoConfiguration을 통해 미리 정의해둔 설정파일을 Bean으로 등록시킨다. @ComponentScan @Component, @Service, @Repository, @Controller, @Configuration 이 붙은 빈들을 찾아서 Context에 빈을 등록시켜준다. @Component 생성한 클래스를 Bean으로 등록시킬때 사용한다. @Bean 개발자가 컨트롤 불가능한 외부 라이브러리를 Bean으로 등록할때 사용한다. @Controller Controller로 사용되는 어노테이션이다. @Service 비즈니스..