Spring Framework. 5

DI & IoC의 개념정리

제어의 역전 IoC(Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 프레임워크 vs 라이브러리 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가 맞다. (JUnit) 반면에 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그것은 프레임워크가 아니라 라이브러리다. 의존관계 주입 DI(Dependency Injection) 의존관계는 정적인 클래스 의존 관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존 관계 둘을 분리해서 생각해야 한다. OrderServiceImpl 은 DiscountPolicy 인터페이스에 의존한다. 실제 어떤 구현 객체가 사용될지는 모른다. (아래 클래스..

Spring Framework. 2022.09.14

SpringBootTest vs WebMvcTest

@SpringBootTest 는 기본 구성 클래스를 찾고 Spring Application Context를 시작하도록 명령한다. @SpringBootTest public class SmokeTest { @Autowired private HomeController controller; @Test public void contextLoads() throws Exception { assertThat(controller).isNotNull(); } } HomeController는 @Autowired를 통해 테스트 메소드가 실행되기전에 의존성을 주입받는다. Spring Test의 좋은 기능은 Application Context가 테스트 간에 캐시된다는 것이다. 그렇게 하면 테스트 케이스에 여러 메소드가 있거나 동..

Spring Framework. 2022.02.06

Mockito vs BDDMockito

Mockito 와 BDDMockito를 비교하기 전에 간단하게 Mockito 개념에 대해 알아보자. 단위 테스트를 작성할 때 해당 객체에 대한 기능만 테스트 하고 싶은데 의존성을 갖는 다른 객체에 의해 테스트 결과가 영향을 받을 수 있다. 이렇게 의존을 가지는 객체를 우리가 원하는 동작만 하도록 만든 것이 Mock 객체다. 그리고 이런 Mock 객체를 직접 만들고 관리하기가 쉽지 않은데, Mockito는 이를 편리하게 사용하도록 지원해주는 대표적인 테스트 프레임워크다. 그러면 Mockito 이용하여 간단하게 작성한 테스트코드 예제를 살펴보자. @Test @DisplayName("주문정보 생성 성공") void createOrderUsingMockito() { // given when(orderReposi..

Spring Framework. 2022.02.04

비대칭키를 이용한 Config Server 암호화/복호화 기능 구현

JDK KeyTool을 이용하여 Public, Private Key 생성할 수 있다. Private Key부터 생성해보자. keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -Dname "CN=Daegyeom Kim, OU=API Development, O=ecplatform.co.kr, L=Seoul, C=KR" -keypass "test1234" -keystore apiEncryptionKey.jks -storepass "test1234" Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 90 days for: CN=Daegyeo..

Spring Framework. 2022.01.29