본문 바로가기

Spring

(65)
단위 테스트 **단위 테스트(Unit Testing)**소프트웨어 개발에서 개별 구성 요소(주로 함수 또는 메서드)가 예상대로 작동하는지 확인하기 위해 수행하는 테스트이다. 단위 테스트는 작은 코드 단위를 독립적으로 테스트하여 그 코드가 주어진 입력에서 올바른 출력을 내는지 검증합니다. 이는 코드의 특정 부분이 정확히 동작하는지, 오류가 없는지 보장하는 데 중점을 둡니다.단위 테스트의 주요 특징:작은 코드 단위 테스트: 함수, 메서드, 클래스 등 매우 작은 단위를 테스트합니다.독립적: 각 테스트는 다른 테스트에 의존하지 않고 독립적으로 수행됩니다. 테스트 단위가 서로 영향을 미치지 않게 해야 합니다.자동화: 단위 테스트는 자동화된 도구를 통해 실행되며, 빠르게 반복적으로 테스트할 수 있습니다.빠른 피드백: 코드 변경..
Spring boot 자주 사용되는 어노테이션(Annotations) @SpringBootApplication - Spring boot application 으로 설정 @Controller - View를 제공하는 controller로 설정 @RestController - REST API를 제공하는 controller로 설정 @RequestMapping - URL 주소를 매핑 @GetMapping - Http GetMethod URL 주소 매핑 @PostMapping - Http PostMethod URL 주소 매핑 @PutMapping - Http PutMethod URL 주소 매핑 @DeleteMapping - Http DeleteMethod URL 주소 매핑 @RequestParam - Http Body를 Parsing 매핑 @Vaild - POJO java class..
7. Validation Validation, 검증이란 프로그래밍에 있어서 가장 필요한 부분이다. 특히 Java에서는 null 값에 대해서 접근 하려고 할 때 null pointer exception이 발생 함으로, 이러한 부분을 방지 하기 위해서 미리 검증을 하는 과정을 Validation 이라고 한다. 단순하게는 아래와 같은 코드들이 있다. 특정한 클래스 객체가 들어온다고 하던지 반복된다면 여러가지 문제점이 야기된다. 1. 검증해야 할 값이 많은 경우 코드의 길이가 길어진다. 2. 구현에 따라서 달라 질 수 있지만 Service Logic과의 분리가 필요 하다. 3. 흩어져 있는 경우 어디에서 검증을 하는지 알기 어려우며, 재사용의 한계가 있다. 4. 구현에 따라 달라 질 수 있찌만, 검증 Logic이 변경 되는 경우 테스트..
6. Spring Boot Annotations 자주 사용하다보면 몸에 익을 것이다. @Controller Response는 기본적으로 Html 구조 @RestController ObjectMapper를 통해 Json구조로 응답한다 @RequestMapping 원하는 http 메소드를 지정해야하는데 지정하지 않으면 모든 메소드가 동작한다. 이를 세분화 한게 @Get, post put delete 가 있는 것 @Component class 단위 @Bean 메서드 단위 , 클래스 단위 x @Autowired DI를 위한 것, 기본적으로 생성자로 된 메서드는 스프링을 알아서 주입해준다. 하지만 명시적으로 받고 싶을 떄 사용. @After 예외가 발생해도 실행 @Around 이전 이후 모두 포함 하는 것 @AfterReturning 메서드 호출이 정상일 떄 ..
5. ObjectMapper 전에 RequestBody에 들어있는 Json 데이터가 변환하는지 알아야하고 어떠한 형태로 바뀌는 지 확인할 수 있었다. ObjectMapper가 SpringFreamwork 에서 활용되는 라이브러리지만 꼭 사용되는 것은 아니다. Json을 관련 된 라이브러리 구글 Gson, ObjectMapper 등이 있다. 스프링은 ObjectMapper를 많이 사용한다. *https://mvnrepository.com/ Maven Repository: Search/Browse/Explore Dropwizard Jetty Support Last Release on Jun 30, 2022 mvnrepository.com 스프링 부트의 Repository를 찾는 곳. 여기서 라이브러리를 찾을 수 있다. 보통은 새로운 버..
4. AOP 코딩 실습-2 AOP+ Custom annotation을 만들어서 특정 메서드의 실행 시간 측정하기. 컨트롤러에서는 서비스에 대한 로직만 남겨두고 나머지 반복되는 로직은 AOP에서 작성하는 것이 좋다. 또한 사용할 어노테이션을 만들고 사용하는 것도 가능하다. 사용할 어노테이션 : @Around package com.example.aop.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.TYPE, ElementType.METHO..
3. AOP 코드 실습 Aspect Oriented Programming 관점지향 프로그래밍 스프링 어플리케이션은 대부분 특별한 경우를 제외 하고는 MVC 웹 어플리케이션에서는 Web Layer, Business Layer, Data Layer로 정의. Web Layer: REST API를 제공하며, Client 중심의 로직 적용 Business Layer: 내부 정책에 따른 logic을 개발하며, 주로 해당 부분을 개발 Data Layer: 데이터 베이스 및 외부와의 연동을 처리 AOP는 메소드들, 특정 구역에 반복되는 로직들을 한 곳에서 몰아 코딩 할 수 있게 해준다. => 스프링 어플리케이션의 특징. 코드 실습 aop 실습을 위해 build.gradle에 의존성 추가 implementation 'org.springfram..
2. IOC 코드 실습 예전 했던 코드로 IOC 코드 실습을 진행했다. @Component: class에 붙이면 Spring bean 취급을 한다. @Component import org.springframework.stereotype.Component; import java.util.Base64; @Component public class Base64Encoder implements IEncoder{ public String encode(String message){ return Base64.getEncoder().encodeToString(message.getBytes()); } } @Component public class UrlEncoder implements IEncoder { public String encode(S..