본문 바로가기

Spring34

[spring + spock + TestContainer] Spring, Spock Framework에서 기능 테스트 하기 - TestContainer 사용 안녕하세요. Spring에서 DB 기능 테스트를 할 때 어떤 걸 주로 이용하시나요? 제가 생각하기로는 여러분들은 로컬에서 쉽게 돌릴 수 있는 인메모리 DB인 H2를 가장 많이 사용하실 것 같습니다. 왜냐하면 사용하기 쉽기 때문이겠죠. 오늘제가 여러분들께 알려드리고자 하는 것은 조금 다른 기능 테스트 방법을 제공해주는 TestContainers입니다. H2를 사용하는 것과 어떻게 다르며 사용할 수 있는지 알아보도록 하겠습니다. :) TestContainer TestContainer는 로컬 환경에서 실제 DB에 테스트를 할 수 있도록 지원하는 Java 라이브러리입니다. DB라면 인메모리 DB인 H2를 사용하면 되지 않느냐? 라고 생각하실 수 있습니다. 그럼에도 불구하고 TestContainer를 왜 사용할까.. 2021. 4. 30.
[elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - 기본적인 검색 만들기 안녕하세요. 오늘 실습해볼 내용은 elasticsearch를 이용하여 Spring에 빠른 검색을 적용해 보는 것입니다. 이전시간까지 우리는 아래 포스팅을 통해서 환경설정, index를 만들고 document의 CRUD를 적용해보는 것에 대해서 실습해 보았습니다. [elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - 환경설정과 Index 만들기 [elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - Document CRUD 만들기 ElasticSearch를 사용한다는 것은 일반적으로 빠른 검색 서비스를 이용하기 위한 목적을 가지고 계실 것입니다. 이전까지는 검색을 하기위해 데이터를 쌓는 부분에 .. 2021. 4. 23.
[elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - Document CRUD 만들기 안녕하세요. 오늘은 이전 시간에 이어서 elasticsearch를 java Spring에서 사용하는 방법에 대해서 코드로 알아보도는 시간을 가져보도록 하겠습니다. 오늘 알아볼 내용은 Java Spring을 이용하여 ElasticSaerch와 기본적인 Document의 CRUD 작업을 하는 방법입니다. Document는 ElasticSearch에 저장되는 실제 데이터입니다. RDB로 치자면 Table의 row에 해당한다고 볼 수 있습니다. 주의사항 제가 사용하는 ElasticSearch 버전은 7.9.3 버전입니다. Java High Level REST Client SDK 같은 경우 버전에 종속적이기 때문에 만약 버전을 꼭 맞추시고 사용하시기를 권장드립니다. 대표적인 예로 6 버전에는 Type 이라는 In.. 2021. 3. 23.
[elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - 환경설정과 Index 만들기 안녕하세요. 오늘은 Elastic에서 제공하는 SDK를 이용하여 Java에서 ElasticSearch에 통신히여 결과를 가져올 수 있도록 해보겠습니다. ElasticSearch의 이론적인 내용에 대해서는 추후에 별도 포스팅으로 여러분들께 공유드리도록 하겠습니다. ElasticSearch API 종류 Elastic에서 제공하는 Java SDK는 2가지 종류가 있습니다. 첫번째는 Low Level SDK이며 두번째는 Hight Level SDK 입니다. 저희가 이번에 사용할 SDK는 Hight Level SDK입니다. Java Low Level REST Client ElasticSearch에서 제공하는 Low Level Java 통신 SDK 입니다. http 요청을 만들 수 있는 라이브러리입니다. Elast.. 2021. 3. 10.
[spring + 객체 지향 원칙] Spring에서의 의존성 역전의 원칙(Dependency Inversion Principle) 안녕하세요. 오랜만에 포스팅을 올리게 되네요. 새해가 되서 책한권 읽어야지 했는데... 생각보다 오래 걸렸습니다. 그 책을 다 읽고 이제 포스팅을 하려고 합니다. 아쉽지만 책과 관련된 내용은 아닙니다. 책을 읽다가 이거 포스팅하면 좋겠다 싶었던 부분이 있었거든요. 오늘 여러분들께 알려드릴 것은 객체 지향 5가지 원칙 중 하나인 의존성 역전의 원칙(Dependency Inversion Principle)입니다. 사실 객체 지향의 5가지 원칙에 대해서는 2년정도 전에 한번 일괄적으로 포스팅을 했었습니다. 해당 원칙에 대해서 생소하신 분들은 객체지향 설계의 5가지 원칙 S.O.L.I.D 포스터를 참고해주시면 도움이 될 것입니다. 오늘은 java Spring을 사용할 때의 예를 들어 DIP에 대해서 좀 더 이해.. 2021. 1. 10.
[Spring] Spring의 핵심기술 PSA - 개념과 원리 안녕하세요. 오늘은 오랜만에 Spring에 대해서 이야기 해보고자합니다. [Spring] Spring의 정의와 기본 개념 포스팅에서 Spring의 대표적인 핵심가치 3가지로 IoC, AOP, PSA가 있다고 말씀드렸었습니다. 그리고 [Spring] Spring의 핵심 기술 IoC / DI에서 그 중 하나인 IoC/DI에 대해서 알아보는 시간을 가졌습니다. 그리고 이후 AOP에 대해서 3개의 포스팅 ([Spring] Spring AOP - 기본 이론편, [Spring] Spring AOP - 실전편, [Spring] Spring AOP - 원리편)에 걸쳐서 함께 알아보는 시간을 가졌습니다. 오늘은 마지막 남은 핵심가치인 PSA(Portable Service Abstraction)에 대해서 알아보는 시간을 .. 2020. 11. 25.
[Spring] Scheduler 어떤걸 사용해야 할까 ? - Spring Scheduler와 Spring Quartz 일정한 시간간격 또는 일정한 시각에 특정 로직을 돌리기 위해서 사용하는 것을 Scheduler라고 합니다. 이런 Scheduler는 Spring에서 Spring Scheduler와 Spring Quartz라는 2가지 방식으로 제공됩니다. 1가지 일에 2가지 방식을 Spring에서 제공하다니... 어떤걸 쓰면 좋을까요? 오늘은 2가지의 공통점과 차이점 그리고 내 프로젝트에서는 어떤 Library를 사용하면 좋을지 알아보는 시간을 가져보도록 하겠습니다. 사용법 먼저 각 라이브러리를 어떻게 사용할 수 있는지 확인해보겠습니다. 먼저 말씀 드리자면 Spring Scheduler를 사용하는 것보도 Spring Quartz를 사용하는 것이 좀 더 복잡하며 어렵습니다. Spring Scheduler Spring Sch.. 2020. 9. 15.
[Spock] Spock Framework 이용하기 - 개론편 [Spock] Spock Framework 이용하기 - 개론편 [Spock] Spock Framework 이용하기 - 실습편 [Spock] Spock Framework 이용하기 - Mock [Spock] Spock Framework 이용하기 - Where 안녕하세요. 이전에 유닛테스트의 중요성 및 JUnit5에 대해서 포스팅을 했었습니다. 다들 도움이 되셨었나요? 오늘은 Spring에서 JUnit과 함께 많이 사용되는 Spock Framework에 대해서 알아보는 시간을 가지도록 해보겠습니다. 오늘은 Specification까지 알아보며 실제 사용은 다음 포스팅의 Block편에서 다루도록 하겠습니다. Spock Framework Spock은 java와 groovy application을 테스팅하기 위한 .. 2020. 8. 20.
[Spring] Spring AOP - 원리편 안녕하세요. 오늘은 Spring AOP의 3번째 시간으로 마지막 시간입니다. 오늘은 AOP가 Spring 내부에서 구현되는 원리에 대해서 한번 알아보는 시간을 가져보도록 하겠습니다. AOP를 사용하는 방법 및 기본적인 이론은 아래 링크를 통해 이전 포스팅을 확인해주시기 바랍니다. [Spring] Spring AOP - 기본 이론편 [Spring] Spring AOP - 실전편 정적 프록시와 동적 프록시 Spring의 AOP는 프록시 패턴을 사용합니다. proxy pattern에 대해서는 예전에 [Spring & Design Pattern] Spring에서 발견한 디자인패턴_Proxy Pattern 으로 포스팅 한적이 있으니 참고하시면 자세히 알 수 있습니다. 만약 Class에 .. 2020. 7. 1.
[Spring] Spring AOP - 실전편 안녕하세요. 오늘은 저번 포스팅, 기본 이론편에 이어서 Spring AOP에 대해서 실제 적용을 해보며 알아보는 시간을 가지도록 하겠습니다. 저번 포스팅에서 배운 이론이 어떻게 적용되는지 눈으로 확인하시며 쉽게 이해가 되셨으면 좋겠습니다. AOP 적용 타입 Spring AOP는 아래와 같은 type의 Advice를 제공합니다. @Before Before는 target 메서드가 실행되기 전에 Advice가 실행됩니다. target이 실행되지 못하도록 막는 방법은 가지고 있지 않습니다. (exception을 발생시키면 되기는 합니다.) @After After는 target 메서드가 실행된 후에 Advice가 실행됩니다. 정상적으로 메서드가 마무리되든 비정상적으로 exception이 발생하든 무조건 실행되는 .. 2020. 6. 23.
[Spring] Spring AOP - 기본 이론편 안녕하세요. 오늘은 Spring AOP에 대해서 알아보고 실제로 적용하는 방법에 대해서 이야기해보고자합니다. AOP는 [Spring] Spring의 정의와 기본 개념에서 Spring을 비침투적인 기술로 만들기위한 3가지 기술중 하나라고 언급한 적이있습니다. 오늘부터는 Spring AOP에 대해서 알아보는 시간을 가져보도록 하겠습니다. AOP 먼저 아래 코드의 상황을 보면서 문제를 이해해보도록 하겠습니다. doSomething이라는 메서드가 있습니다. 이 메서드는 어떤 바쁜 일을 합니다. 이렇게 운영하던 중 새로운 요구사항이 들어왔습니다. 바로 doSomething 메서드가 실행되는 시간을 찍어달라고 합니다. 그렇다면 우리는 아래와 같이 timeCheck 메서드를 만들어 코드를 작성할 수 있습니다. pub.. 2020. 6. 20.
[Spring] Spring의 IoC/DI Container 안녕하세요. 저번 포스팅에서 IoC와 DI의 개념에 대해서 알아보았습니다. IoC 개념을 설명하며 Spring의 IoC는 일반적인 IoC 개념에 DI를 의 개념을 추가한 IoC/DI Container라고 설명을 드렸습니다. 오늘은 구체적으로 일반적인 IoC에 어떤 개념이 추가 된것인지 한번 보도록 하겠습니다. 본편에 들어가기 전에 먼저 Spring에 대한 용어를 정리한 후 Spring Container의 구조에 대해서 알아보도록 하겠습니다. 용어 정리 Spring IoC를 공부하다보면 생소하지만 한번쯤은 흘려 들어본 용어들이 많이 나옵니다. 이러한 용어를 정리하는 시간을 가지도록 하겠습니다. 빈(Bean) 빈 또는 빈 오브젝트는 Spring이 IoC 방식으로 관리하는 오브젝트라는 뜻. 즉, 우리가 일반적.. 2020. 3. 21.