본문 바로가기

Spring47

스프링부트로 쇼핑몰 만들기 - 1주차 1. 1주차 1주차는 Spring에서 필요한 Java 개념 위주와 Spring 의 기본적인 개념에 관해 진행 상속, 인터페이스, 리플렉션 Spring의 Bean 컨테이너 Spring Boot의 설정 1-1. Intro java Exam03으로 실행하면 class path에서 파일 찾는다 클래스 정보를 읽은 뒤, 메모리에 올라감 클래스 정보를 메모리에 올리는건 시스템 클래스로더가 담당 한번 올라간 정보는 JVM 다시 시작하기 전까지 계속 유지 static 정보는 별도의 메모리에 올림 즉, 이 클래스를 사용해야겠다고 읽어들일때 static 정보가 올라감 static 블럭은 딱 한번만 실행 메소드에 static이 붙은 친구들은 인스턴스 없이도 실행가능 자식 인스턴스 생성시 부모 인스턴스도 생성된다. 자동차라는.. 2019. 1. 6.
SpringBoot에서 날짜 타입 JSON 변환에 대한 오해 풀기 안녕하세요? 이번 시간엔 Spring과 JSON에 대해 정리해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 0. 들어가며 Spring을 사용할 경우 Controller에서 요청 받는/응답 주는 DTO에서 LocalDate와 LocalDateTime을 사용할 경우가 종종 있습니다. 헌데 이럴 경우 많은 분들이 직렬화를 못해 String으로 받은 후 서비스 레이어에서 변환하는 것을 보았습니다. Spring에선 굳이 이럴 필요가 없으니 아래 내용을 한번 참고하셔서 번거로운 직렬화 과정을 쉽게 해결하시길 바랍니다. 개발 환경은 .. 2018. 12. 17.
로컬 Spring Boot에 SSL 적용하기 Facebook OAuth를 개발해야 하는 경우 등 로컬 환경에서 HTTPS 서버가 필요할때가 종종 있습니다. (페이스북 OAuth 설정 화면) 운영 혹은 개발 환경에서는 Nginx 혹은 AWS ELB와 같은 곳에서 SSL 인증서를 설치하기 때문에 순수하게 로컬 환경에서만 SSL 인증서를 사용할 수 있는 방법이 필요합니다. 이번 시간에는 Spring Boot 로컬 환경에서 SSL 인증서를 개발 & 적용 하는 방법을 소개 드리겠습니다. 먼저 프로젝트 디렉토리 안에서 다음과 같은 명령어를 실행합니다. keytool -genkey -alias bns-ssl -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 -ali.. 2018. 10. 29.
Spring Boot에서 외부 API 테스트하기 안녕하세요? 이번 시간엔 Spring Boot의 @RestClientTest 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. 1. 문제 상황 예를 들어 외부 API를 통해 데이터를 가져와야 하는 경우가 있다고 가정해보겠습니다. 예제로 사용할 Service 코드는 다음과 같습니다. @Slf4j @Service public class UserService { private final RestTemplate restTemplate; @Value("${order.api.url}") private String orderApiUrl; public UserService(RestTemplateBuilder restTemplateBuilder) { thi.. 2018. 9. 29.
SpringBoot에서 Spock Mock 사용법과 문제점 문제점 Spring Boot의 @MockBean, @SpyBean은 Junit & Mockito를 지원합니다. 그러다보니 Spock을 쓴다 해도 Spring의 Bean을 Mocking하려면 Mockito 방식을 사용해야 합니다. example) @SpringBootTest class CustomerServiceSpockMockTest extends Specification { @Autowired CustomerService customerService @MockBean(name = "jdbcTemplate") JdbcTemplate jdbcTemplate def "Customer_id로_이름을_조회"() { given: given(jdbcTemplate.query(anyString(), any(BeanP.. 2018. 9. 28.
@SpyBean @MockBean 의도적으로 사용하지 않기 보통 스프링 부트 관련 테스트 코드를 작성할때 @MockBean과 @SpyBean 를 사용했습니다. (참고: SpringBoot @MockBean, @SpyBean 소개) 복잡한 스프링 프로젝트에서도 원하는 코드만 아주 간단하게 Mock 처리를 할 수가 있어 정말 많이 사용했습니다. 그러다 최근에 Spring Boot Cloud 프로젝트의 테스트 코드를 보면서 제가 완전히 잘못하고 있음을 깨달았는데요. 대부분의 테스트 코드가 @MockBean, @SpyBean없이 작성되있었습니다. 마침 정진욱님의 발표도 봤던지라, 저도 @MockBean과 @SpyBean없이 테스트 코드 작성을 시도해보니!완전 큰 깨달음을 얻었습니다. 샘플 예제로 한번 소개드리겠습니다. 예제 예를 들어서, AWS SQS로 메세지를 보내는.. 2018. 7. 21.