일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- POJO
- java spring
- AOP
- 마이바티스
- spring
- Ubunt
- spring framework
- Spring JDBC
- @Spring-Test
- JdbcTemplate
- pointcut
- @AspectJ
- Di
- 리눅스
- java
- 컨테이너
- @JUnit
- Spring Boot
- 프로퍼티
- SpringJDBC
- spring aop
- Dependency Injection
- Framework
- @test
- Linux
- unix
- XML
- myBatis
- STS
- JDBC TEMPLATE
Archives
- Today
- Total
개키우는개발자 : )
DI를 이용한 Decorator, Proxy 패턴 본문
토비의 스프링 부트 - 이해와 원리/섹션6 - DI와 테스트, 디자인 패턴
DI를 이용한 Decorator, Proxy 패턴
DOGvelopers 2024. 10. 8. 23:57반응형
요약 및 핵심 개념
의존성 주입(Dependency Injection)과 데코레이터 패턴(Decorator Pattern), 그리고 프록시 패턴(Proxy Pattern)에 대해 심도 있게 다루었습니다. 특히 Spring 프레임워크에서 의존성 주입을 통해 객체 간의 관계를 관리하고 확장성을 제공하는 방법을 설명했습니다.
핵심 내용
의존성 주입과 의존성 역전:
- 초기 코드는
HelloController
가SimpleHelloService
클래스에 직접 의존하는 구조로 설계되었지만, 이를 인터페이스 기반 의존성 주입으로 변경해 유연성을 제공. - 의존성 주입(DI)의 핵심은 클래스들이 서로 직접 의존하지 않고, 스프링 컨테이너가 이들을 연결해주는 것.
- 이를 통해 코드 변경 없이도 다양한 HelloService 구현체를 교체할 수 있는 구조를 제공.
- 초기 코드는
데코레이터 패턴:
- HelloDecorator를 통해 기존의
SimpleHelloService
클래스에 기능을 추가하는 구조를 설명. - 데코레이터 패턴을 사용하면 기존 코드를 수정하지 않고, 새로운 책임을 추가할 수 있음.
HelloController
는HelloDecorator
를 주입받고, HelloDecorator는 다시SimpleHelloService
를 호출하는 방식으로 중간에 기능을 추가.
- HelloDecorator를 통해 기존의
빈 주입 및 Autowiring:
- 스프링에서 Autowiring은 스프링 컨테이너가 여러 빈 중 하나를 자동으로 주입하는 방식.
- Primary 애노테이션을 사용해 빈이 여러 개일 때 우선순위를 지정할 수 있음.
- 예제에서는
HelloDecorator
와SimpleHelloService
가 모두HelloService
인터페이스를 구현하지만, Primary 애노테이션을 통해 주입 우선순위를 지정.
프록시 패턴:
- 프록시 패턴(Proxy Pattern)은 실체 객체를 대리하는 객체를 사용하여 지연 로딩이나 원격 호출과 같은 기능을 추가.
HelloController
는 실제 서비스 객체 대신 프록시를 통해 서비스를 호출하고, 프록시는 실체 객체를 호출하거나 원격 서버의 객체를 대리 호출하는 구조.- 프록시 패턴은 성능 최적화, 보안, 액세스 제어 등에서 자주 사용됨.
테스트:
HelloDecorator
의 단위 테스트를 작성하여 데코레이터가 제대로 동작하는지 검증.- 람다식으로 간단한 테스트 스텁을 만들어 데코레이터가 책임을 추가한 기능을 테스트.
결론:
스프링 프레임워크에서 의존성 주입을 사용하면, 객체 간의 관계를 유연하게 관리할 수 있으며, 데코레이터 패턴과 프록시 패턴을 활용해 기능 확장 및 지연 로딩 같은 다양한 설계를 손쉽게 적용할 수 있습니다.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션6 - DI와 테스트, 디자인 패턴' 카테고리의 다른 글
DI와 단위 테스트 (0) | 2024.10.08 |
---|---|
테스트 코드를 이용한 테스트 (0) | 2024.10.08 |
Comments