Java&Web 30

[JUnit] Mockito를 이용한 단위 테스트

Mockito란? Mockito란 단위 테스트를 위한 Java Mocking Framework이다. JUnit에서 가짜 객체인 Mock을 생성해주고 관리하고 검증할 수 있도록 지원해주는 Framework이다. 구현체가 아직 없는 경우나 구현체가 있더라도 특정 단위만 테스트하고 싶을 경우 사용할 수 있도록 적절한 환경을 제공해준다. Mock 객체란? Mockito에서 Mock 객체를 제공해준다고 위에서 언급이 되었는데, Mock 객체란 다음과 같다. Mock 객체란 개발한 프로그램을 테스트할 때 테스트를 수행할 모듈과 연결되는 외부의 다른 모듈을 흉내 내는 가짜 모듈을 생성하여 테스트의 효율성을 높이는 데 사용하는 객체이다. 다음과 같은 예가 있다고 가정해보자. 위와 같은 클래스들이 있는 상황에서 Comm..

Java&Web 2021.02.02

[WEB] RestTemplate을 이용하여 API 호출하기

RestTemplate이란? RestTemplate은 Spring 3.0 부터 지원하는 템플릿으로 Spring에서 HTTP 통신을 RESTful 형식에 맞게 손쉬운 사용을 제공해주는 템플릿이다. Rest API 서비스를 요청후 응답 받을 수 있도록 설계되었으며 HTTP 프로토콜의 메소드(ex. GET, POST, DELETE, PUT)들에 적합한 여러 메소드들을 제공한다. Java에서 사용되는 다른 템플릿(ex. JdbcTemplate)들 처럼 단순 메소드 호출 만으로 복잡한 작업을 쉽게 처리할 수 있는 것이 특징이다. RestTemplate의 특징 Spring 3.0 부터 지원하는 Spring의 HTTP 통신 템플릿 HTTP 요청 후 JSON, XML, String 과 같은 응답을 받을 수 있는 템플릿..

Java&Web 2021.01.23

[WEB] Spring의 웹 계층과 트랜잭션 스크립트, 도메인 모델

Spring의 웹 계층 Web Layer 흔히 사용하는 Controller와 JSP 등의 뷰 템플릿 영역이다. 이외에도 filter, interceptor, ControllerAdvice 등 외부 요청과 응답에 대한 전반적인 영역이다. Service Layer @Service에 사용되는 서비스 영역이다. 일반적으로 Controller와 DAO의 중간 영역으로 사용된다. @Transcational이 사용되어야 하는 영역이다. Repository Layer DB와 같이 데이터 저장소에 접근하는 영역이다. DAO(Data Access Object)영역이다. DTOs DTO(Data Transfer Object)는 계층 간에 데이터 교환을 위한 객체를 DTOs는 그 영역이다. Web Layer에서 사용될 객체나..

Java&Web 2021.01.17

[Enum] Enum을 Binding해주는 Custom Converter

1 2 3 4 5 6 7 8 9 10 11 12 public enum Status { UNCHECKED(1), APPROVED(2), BLOCKED(3); @Getter private final int statusCode; Status(int statusCode) { this.statusCode = statusCode; } } Colored by Color Scripter 위와 같은 Enum 클래스를 사용한다고 가정하자. 클라이언트쪽에서 서버쪽으로 요청을 보낼때 인자값으로 위의 Enum에 등록된 값을 하나 사용할려고 한다. 이때, 클라이언트쪽에서 요청을 보낼때 Enum에 등록된 UNCHECKED, APPROVED, BLOCKED로 서버에 보낸다면 인자값을 받음에 있어 문제가 없을 것이다. 하지만 만약 u..

Java&Web 2021.01.13

[MyBatis] Enum을 MyBatis 환경에서 사용하기

Java 서버단에서 상수를 처리함에 있어서 여러방법이 있다. 보통 final을 붙여서 상수를 선언하여 처리하는 것이 일반적이지만 성질이 비슷한 상수가 다수가 존재한다면 Enum 클래스를 이용하여 처리할 수 있다. Enum 클래스에 대한 자세한 내용은 다른 포스팅에서 다룰 예정이고, 이번 포스팅에선 이러한 Enum 클래스를 MyBatis 환경에서 적용시키는 실습을 해보았다. 다음과 같은 과정을 거쳐 Springboot에서 Enum 클래스를 MyBatis에 적용시켜 보았다. Enum 클래스 생성 1 2 3 4 5 6 7 8 9 10 11 12 public enum Status { UNCHECKED(1), APPROVED(2), BLOCKED(3); @Getter private final int statusC..

Java&Web 2021.01.12

[MyBatis] Springboot에 MyBatis-Spring 설정하기(2)

[MyBatis] Springboot에 MyBatis-Spring 설정하기(1) [MyBatis] Springboot에 MyBatis-Spring 설정하기(1) [MyBatis] MyBatis [MyBatis] MyBatis MyBatis란? MyBatis는 객체 지향 언어인 Java의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 도와주는 퍼시스턴스 프레임워크(Persistence Framework, 데이터를 다루는 클래.. minkwon4.tistory.com 지난 포스팅에서 MyBatis-Spring에 대해 알아보고, application.properties만을 이용하여 Springboot환경에 MyBatis-Spring을 적용하는 실습을 해보았다. 이번 포스팅에서는 application.propert..

Java&Web 2021.01.04

[MyBatis] Springboot에 MyBatis-Spring 설정하기(1)

[MyBatis] MyBatis란 [MyBatis] MyBatis란 MyBatis란? MyBatis는 객체 지향 언어인 Java의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 도와주는 퍼시스턴스 프레임워크(Persistence Framework, 데이터를 다루는 클래스 및 설정파일 집합)이다. MyBati minkwon4.tistory.com 지난번 포스팅때 MyBatis에 대해 조사하였는데, 조사하다가 Spring 환경에서 사용하기 적합하게 나온 Mybatis-Spring에 대해 알게 되어 조사해보았다. MyBatis-Spring의 주요 컴포넌트 이름 설명 SqlSessionFactoryBean SqlSessionFactory를 작성하고 Spring DI 컨테이너에 저장하는 구성요소 기본적으로 MyBat..

Java&Web 2020.12.31

[MyBatis] MyBatis란

MyBatis란? MyBatis는 객체 지향 언어인 Java의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 도와주는 퍼시스턴스 프레임워크(Persistence Framework, 데이터를 다루는 클래스 및 설정파일 집합)이다. MyBatis는 JDBC를 통해 RDBMS에 엑세스하는 작업을 캡슐화하고 기존 JDBC의 중복작업을 간소화해준다. 또한 XML파일의 형태인 mapper를 통해 프로그램 코드로 부터 SQL 쿼리를 분리되는 환경을 제공하고 Java 객체와 매핑하는 작업을 도와준다. 추가적으로 다음과 같은 특징이 있다. 기존 JDBC보다 사용하기 편리 다른 ORM(Object Relational Mapping)프레임워크에 비해 추가적인 학습의 부담이 적음 복잡한 쿼리 또는 다이나믹한 쿼리를 지원 프로그램..

Java&Web 2020.12.31

[Logging] slf4j(Simple Logging Facade For Java)란

[Logging] slf4j, log4j, logback, log4j2 [Logging] slf4j, log4j, logback, log4j2 로그(log)는 소프트웨어의 이벤트를 기록하는 것으로써, 소프트웨어의 동작상태를 파악하고 문제가 발생했을 때 이 동작 파악을 통해서 소프트웨어의 문제를 찾아내고 해결하기 위해 디자인 되 minkwon4.tistory.com 지난번 글에서 Java의 로깅 프레임워크인 slf4j, log4j, logback, log4j2에 대해 알아보았다. 그 중 slf4j에 대해 깊게 조사해보았다. slf4j란? slf4j는 Simple Logging Facade For Java의 약자로써 slf4j의 공식 문서에 따르면 "slf4j는 다양한 로깅 프레임 워크(ex. java.ut..

Java&Web 2020.12.30

[Maven] Maven Profile을 이용한 Springboot 배포서버 별 환경 구성하기

Springboot를 개발하고 배포를 하다보면 다양한 서버환경을 만나게 된다. 예를 들면 하나의 애플리케이션 출시되기 전까지 다음과 같은 서버 환경을 거칠수도 있다. Local 서버 : 각 개발자들의 로컬 환경에 띄우는 서버 Alpha 서버 : 통합 코드로 띄우는 서버 Beta 서버 : Client 개발자 연동 및 QA 테스트 환경 제공 Staging 서버 : Real 서버와 동일 환경 설정 후 테스트 Real 서버 : 실제 사용자의 게임 처리 위의 서버 환경은 LINE의 Rangers 게임 개발팀의 서버환경이다(출처 : LINE Rangers 신입사원의 서버 분석기). 이처럼 한 애플리케이션에 대해 다양한 서버환경이 존재하고 각 서버환경마다 다른 개발환경들(DB설정, log설정, path설정 등)이 적..

Java&Web 2020.12.29