Server Development (64) 썸네일형 리스트형 RestTemplete Client는 HTTP 등 다양한 형태로 Server와 통신을 하고 만약 HTTP를 사용한다는 가정하에 서버는 Restful API를 통해 Client가 필요한 데이터를 전달한다. 가끔, 서버 또한 이런식으로 다른 서버에 데이터가 필요한 경우 사용을 하곤한다. 이 때, 한 서버가 클라이언트가 되어 다른 서버에 데이터를 요청하는 방식이 필요하다. 하지만 다르지 않다. 서버또한 HTTP 통신으로 다른 서버와 통신을 한다. 어떻게 서버에서 HTTP통신을 할 수 있을까? 자바에서 기본으로 제공해주는 방법을 사용할수도 있지만 RestTemplete으로 통신이 가능하다. 이번엔 RestTemplete을 사용하는 방법에 대해서 정리해보려고 한다. RestTemplete - 스프링에서 제공하는 템플릿으로 HTTP 통신.. Spring - AOP Spring에서는 기본적으로 여러가지 기능을 제공한다. IoC, DI, AOP, ORM, MVC, Test 등이 있는데 전반적으로 개발을 하는데 있어서 쉽게 하기위해서 제공해주는 기능 같다. 그 중에 스프링 AOP가 무엇인지 알아보려고 한다. AOP - Aspect Oriented Programming - 관점 지향 프로그래밍 - Object Oriented Programming(객체 지향 프로그래밍)을 보완하여 여러곳에서 쓰이는 공통기능을 모듈화하여 필요한곳에 연결함으로써 유지보수 또는 재사용이 용이해진다. 개발을 하다보면 자주 쓰이는 기능이 있다. 이들을 따로 모듈화하여 비지니스 로직과 분리해두지만 동작은 똑같게 만들어주는 방식을 AOP라고 한다. 코드를 분리할때, 핵심적인 관점과 부가적인 관점 둘로.. Test Coverage with Jacoco Code Coverage - 소프트웨어의 테스트 수준이 충분한지를 측정하는 지표 - 테스트 코드 작성 후 해당 코드가 실행되었는지 테스트하는 지표를 의미한다. - 여러가지 도구 존재. ex) Jacoco Jacoco - JAVA 코드의 커버리지를 체크하는 라이브러리 - 테스트 커버리지를 측정해준다. - Runtime에서 측정 - 결과를 Html, xml, csv 형태로 저장해서 전달 테스트의 종류 - 블랙 박스 테스트 : 사용자 관점에서 입력에 대해 올바른 출력이 나오는지를 테스트 - 화이트 박스 테스트 : 개발자 관점에서 소스 내부 구조와 동작을 테스트 (Unit Test 등) Maven의 라이프 사이클은 다음과 같다. compile -> test -> package -> install -> deplo.. Unit Test with MVC 스프링에서 어떻게 단위테스트를 하는지 간략히 보려고한다. 보통 스프링은 controller - service - DAO 구조로 이루어지고 클래스들을 어떻게 단위테스트하는지 알아보려고 한다. 또한, 방식은 가정-실행-결과 순으로 이루어진다. 가정 : 어떤 조건이 주어지고 그 결과는 이렇다고 정해져있을 때, 실행 : 해당 가정을 통해 이 클래스를 실행하면, 결과 : 이런 결과를 가져온다. 아래 예시는 회원가입에 대한 간단한 단위테스트이다. 1. Controller @WebMvcTest : 해당 클래스를 테스트 한다, Controller에만 사용할 수 있으며, 실제 실행이 아닌 가짜 실행이다. @Autowired : 실제 주입을 의미하는데, 여기서 MockMvc는 HTTP 통신을 위한 클래스이다. 이는 실제를.. Spring - Exception 예외처리에는 크게 두가지로 볼 수 있다. Spring에서 기본적으로 제공해주는 Exception, 우리가 직접 구현해서 사용해는 Exception이 있다. 그 둘에 대해서 모두 알아보려고 한다. 우선, Exception은 다음과 같은 계층구조를 갖는다. Exception -RuntimeException - NullPointerException -IOException 기본 예외 처리 방식(Handler 생성) " @ControllerAdvice 또는 @RestControllerAdvice 로 모든 컨트롤러에서 발생할 수 있는 예외를 정의하고, @ExceptionHandler를 통해 발생하는 예외마다 처리할 메서드를 정의 " - Exception을 처리 - @RestControllerAdvice는 예외발생시.. Class Validation 스프링은 자바를 기반으로하며 데이터처리에 관해서 클래스, 객체를 생성하여 처리를 한다. 예를 들어, DTO(자바에서 처리하는 데이터형식), Entity(DB에서 처리하는 데이터 형식) 등 여러가지 데이터를 처리한다. 이때, 데이터가 과연 유효한지 데이터 검증을 할 필요가 있다. 그래서 관련된 애너테이션들을 알아보려고한다. 작성은 해당 데이터를 처리하는 클래스에 작성하면 된다. 보통은 직렬화 작업시 많이 사용된다(json -> class instance) 1. Dependancy org.springframework.boot spring-boot-starter-validation 2. Annotation @Size(min=1, max=3) : 필드의 크기(문자열 길이, 컬렉션 크기 등) @NotNull : .. Spring - Log(LogBack) Spring에서 로그 관리는 어떻게 할까? 여러가지 로그 라이브러리를 통해 사용하는데, 나는 logback을 사용해보고자 한다. 로그를 찍을때, 우선 Error Level에 대해서 알아야한다. 크게 5가지가 있다. 아래로 갈수록 강한 오류이자 중요한 오류이다. 예를들어, Warn 지정시, Warn, Error 만 출력한다. Trace : Debug 보다 더 디테일한 메시지 Debug : 디버깅을 위한 메시지 Info : 정보성 메시지 Warn : 밑의 Error의 원인이 될 수 있는 경우 Error : 로직 수행 중 오류, 시스템이 작동이 불가능한 경우 특징 - 테스트와 실제간 레벨 설정 가능. - 출력 방식 (console, file, db) 등 설정 가능. - 프로그램 중단없이 설정파일 변경 가능. .. Swagger 일반적으로 프론트엔드 - 백엔드 개발을 할 때, 아래와 같은 과정에서 통신이 일어난다. Client - Front-End Back-End 이때, 예를 들어, RESTful API를 사용해 통신을 한다고 가정할 때, 프론트 엔드 또한 백엔드에 어떤 방식으로 요청을 해야 해당 API를 사용할 수 있는지 알아야하고 어떤 결과를 가져오는지를 알아야 서로 원활한 통신이 가능하다. 이런 경우, 사용하는 Library가 Swagger이다. Swagger - 서버로 요청되는 API 리스트를 HTML화면으로 문서화하여 테스트할 수 있는 라이브러리. - @RestController로 설정된 Class 빈을 읽어 HTML 문서를 작성함. - API 형식 변경마다 자동으로 업데이트. 사용 방법 - 사용 환경은 Spring B.. 이전 1 2 3 4 5 6 7 8 다음