Spring
-
개방 폐쇄 원칙(OCP)클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 변화의 특성이 다른 부분을 구분하고 각각 다른 목적과 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어야 한다. 템플릿코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분(템플릿)을 자유롭게 변경되는 성질을 가진 부분(콜백)으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법 템플릿 메서드 패턴도 템플릿을 사용한다.다만, 템플릿 메서드 패턴은 상속을 이용템플릿은 전략 패턴이 적용되었다 콜백(Callback)콜백은 실행되는 것을 목적으로 다른 오브젝트의 메서드에 전달되는 오브젝트파라미터로 전달되지만 값을 참조하기 위한 것이 아니라 특정 로직을 담은 메..
토비의 스프링 6 - 템플릿개방 폐쇄 원칙(OCP)클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 변화의 특성이 다른 부분을 구분하고 각각 다른 목적과 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어야 한다. 템플릿코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분(템플릿)을 자유롭게 변경되는 성질을 가진 부분(콜백)으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법 템플릿 메서드 패턴도 템플릿을 사용한다.다만, 템플릿 메서드 패턴은 상속을 이용템플릿은 전략 패턴이 적용되었다 콜백(Callback)콜백은 실행되는 것을 목적으로 다른 오브젝트의 메서드에 전달되는 오브젝트파라미터로 전달되지만 값을 참조하기 위한 것이 아니라 특정 로직을 담은 메..
2024.11.29 -
테스트를 만들지 않을 거면 스프링을 도대체 뭐하러 쓰는 거죠? 테스트를 작성할때 Service Layer에 대한 테스트를 하고 싶다고 하면 해당 Layer에서 사용하는 외부 시스템을 제어해야 한다.이러한 역할을 해주는 것이 "Mock", "Stub", "Double".. 등이 있다. 테스트와 DI수동 DI를 이용한 테스트 : 테스트용 협력자(Collborator)/의존 오브젝트를 테스트 대상에 직접 주입 스프링 DI를 이용한 테스트 : 테스트용 협력자(Collborator)/의존 오브젝트를 스프링의 구성 정보를 이용해서 지정하고 컨테이너로 부터 가져와 테스트 @ContextConfiguration, @Autowired 도메인 오브젝트 테스트 테스트의 꽃도메인 모델 아키텍처 패턴 : 도메인 로직, 비즈니..
토비의 스프링 6 - 테스트테스트를 만들지 않을 거면 스프링을 도대체 뭐하러 쓰는 거죠? 테스트를 작성할때 Service Layer에 대한 테스트를 하고 싶다고 하면 해당 Layer에서 사용하는 외부 시스템을 제어해야 한다.이러한 역할을 해주는 것이 "Mock", "Stub", "Double".. 등이 있다. 테스트와 DI수동 DI를 이용한 테스트 : 테스트용 협력자(Collborator)/의존 오브젝트를 테스트 대상에 직접 주입 스프링 DI를 이용한 테스트 : 테스트용 협력자(Collborator)/의존 오브젝트를 스프링의 구성 정보를 이용해서 지정하고 컨테이너로 부터 가져와 테스트 @ContextConfiguration, @Autowired 도메인 오브젝트 테스트 테스트의 꽃도메인 모델 아키텍처 패턴 : 도메인 로직, 비즈니..
2024.11.26 -
Spring을 통해 WebApplication을 작성할 때 Redis를 크게 두 가지 방향으로 쓸 수 있을 것 같다. @Cacheable, @CacheEvict 등의 애너테이션을 활용한 Cache 용도 RedisTemplate를 활용한 다양한 자료구조에 데이터 관리(CRUD)먼저 Cache로 사용하는 방법을 알아보자. 의존성 implementation 'org.springframework.boot:spring-boot-starter-data-redis' Spring에서 @Cacheable, @CacheEvict, @CachePut과 같은 애너테이션을 만들어 두었고 해당 애너테이션이 어떻게 동작할지는 자신이 원하는 Cache Framework의 구현체만 주입해 주면 된다. -> CacheManage..
[Spring] Cache Abstraction 사용 (Redis)Spring을 통해 WebApplication을 작성할 때 Redis를 크게 두 가지 방향으로 쓸 수 있을 것 같다. @Cacheable, @CacheEvict 등의 애너테이션을 활용한 Cache 용도 RedisTemplate를 활용한 다양한 자료구조에 데이터 관리(CRUD)먼저 Cache로 사용하는 방법을 알아보자. 의존성 implementation 'org.springframework.boot:spring-boot-starter-data-redis' Spring에서 @Cacheable, @CacheEvict, @CachePut과 같은 애너테이션을 만들어 두었고 해당 애너테이션이 어떻게 동작할지는 자신이 원하는 Cache Framework의 구현체만 주입해 주면 된다. -> CacheManage..
2024.11.18 -
디자인 패턴을 구분하는 두 가지 방식 -> Purpose, Scope그중에 중점으로 살펴볼 방식은 scope에 의한 구분 방식이다. scope는 두 가지로 나뉠 수 있다 -> 클래스, 오브젝트 클래스는 상속(inheritance)을 통한 확장성을 가진 패턴오브젝트는 합성(composition)을 이용한 패턴 대부분의 디자인 패턴은 오브젝트 패턴이다. 가능하면 오브젝트 합성을 상속보다 더 선호하라는 디자인 패턴의 기본 객체지향 원리를 따른 것이다. 오브젝트 합성을 이용하는 디자인 패턴을 적용할 때 스프링의 의존관계 주입을 사용 - 앞에 설명한 전략 패턴 또한 이에 해당 데코레이터(Decorator) 디자인 패턴오브젝트에 부가적인 기능/책임을 동적으로 부여하는 디자인 패턴- 기존의 코드는 건드리지 않고,..
토비의 스프링 6 - DI와 디자인 패턴, 의존성 역전 원칙디자인 패턴을 구분하는 두 가지 방식 -> Purpose, Scope그중에 중점으로 살펴볼 방식은 scope에 의한 구분 방식이다. scope는 두 가지로 나뉠 수 있다 -> 클래스, 오브젝트 클래스는 상속(inheritance)을 통한 확장성을 가진 패턴오브젝트는 합성(composition)을 이용한 패턴 대부분의 디자인 패턴은 오브젝트 패턴이다. 가능하면 오브젝트 합성을 상속보다 더 선호하라는 디자인 패턴의 기본 객체지향 원리를 따른 것이다. 오브젝트 합성을 이용하는 디자인 패턴을 적용할 때 스프링의 의존관계 주입을 사용 - 앞에 설명한 전략 패턴 또한 이에 해당 데코레이터(Decorator) 디자인 패턴오브젝트에 부가적인 기능/책임을 동적으로 부여하는 디자인 패턴- 기존의 코드는 건드리지 않고,..
2024.11.10