Spring6 [스프링 핵심 원리 - 고급편] 6. 프록시 패턴으로 데이터 캐싱하기 [스프링 핵심 원리 - 고급편] 6. 프록시 패턴 프록시 패턴 - 정의 프록시 패턴에 대해 정리하기 전에 프록시(Proxy)라는 개념부터 설명드리겠습니다. 일반적으로 컴퓨터공학, IT, 프로그래밍 분야에서 프록시라는 개념은 대리자 또는 대리인이라는 뜻으로 누군가에게 어떤 일을 시킬 때 중간에 프록시를 통해 대신시키는 것을 말합니다. 위와 같이 일반적으로 Client(요청하는 곳)에서 Server(요청을 받아 처리하는 곳)를 직접 호출하고 처리 결과를 받습니다. 여기에서 클라이언트가 요청한 결과를 서버에 직접 호출하는 것이 아니라 어떤 대리자를 통해 간접적으로 호출하는 경우가 있습니다. 이 경우 대리자 역학을 하는 곳을 프록시라고 합니다. 위의 개념을 Java의 객체에 도입하면 클라이언트는 요청하는 객체이.. 2024. 1. 18. [스프링 핵심 원리 - 고급편] 5. 템플릿 콜백 패턴 [스프링 핵심 원리 - 고급편] 5. 템플릿 콜백 패턴 템플릿 콜백 패턴 - 정의 템플릿 콜백 패턴은 이전 포스팅에서 설명드린 전략 패턴의 변형된 형태, 혹은 확장된 형태의 패턴입니다. 전략 패턴의 기본적인 구조에 변경되는 코드 부분(전략, 동작)을 매번 클래스로 만들지 않고 익명 내부 클래스로 사용하는 패턴을 말합니다 패턴의 이름이 템플릿 콜백인데 여기서 전략 패턴의 변하지 않는 로직인 컨텍스트가 템플릿 역할을 하고 변경되는 로직인 전략이 콜백으로 넘어오기 때문에 붙여진 이름입니다. 전략 패턴에서 템플릿 콜백 패턴으로 용어를 변경하면 다음과 같습니다. Strategy Pattern → Template Callback Pattern Context → Template Strategy → Callback 프.. 2024. 1. 7. [스프링 핵심 원리 - 고급편] 4. 전략 패턴으로 유연하게 동작 변경하기 [스프링 핵심 원리 - 고급편] 4. 전략 패턴 전략 패턴 - 정의 다수의 책과 문서에서는 전략 패턴을 다양하게 정의하고 있습니다 1. 행위에 대한 전략 클래스를 각각 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의한다. 객체의 행위를 변경할 때 직접 행위를 수정하지 않고 전략을 변경함으로써 행위를 유연하게 확장하는 방법을 말한다. 2. 변하지 않는 부분을 "Context" 라는 곳에 두고, 변하는 부분은 "Strategy"라는 인터페이스를 만들고 해당 인터페이스를 구현하여 위임으로 문제를 해결하는 것이다. 3. 알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만들자. 전략을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 4. 런타임 중에 알고리즘.. 2024. 1. 3. [스프링 핵심 원리 - 고급편] 3. 템플릿 메서드 패턴으로 중복 코드 제거하기 [스프링 핵심 원리 - 고급편] 3. 템플릿 메서드 패턴 템플릿 메서드 패턴 - 정의 다수의 책과 문서에서는 템플릿 메서드 패턴을 다음과 같이 정의하고 있습니다. 1. 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기하는 것 2. 부모 클래스에서 알고리즘의 골격을 정의하고 자식 클래스들에서 오버라이드를 이용해 특정 단계를 개발하는 패턴 3. 상속을 통해 슈퍼 클래스의 기능을 확장할 때 사용하는 방법, 변하지 않는 기능은 슈퍼클래스에 만들어 두고 자주 변경되며 확장할 기능은 서브 클래스에서 만드는 패턴 4. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 하는것 공통적인 내용만 정리하면 변하지 않는 전체 흐름은 부모 클래스에 정의하고 중간에 변경되는 .. 2023. 12. 28. [스프링 핵심 원리 - 고급편] 2. 동시성 문제를 ThreadLocal로 해결하기 [스프링 핵심 원리 - 고급편] 2. 동시성 문제를 ThreadLocal로 해결하기 인프런의 스프링 핵심 원리 고급편을 듣고 정리한 내용입니다. 동시성 문제 여러 쓰레드에서 동시에 같은 인스턴스의 필드값을 접근해서 변경할 때 발생할 수 있는 문제를 말합니다. 일반적으로 동시성 문제가 발생하기 전에 미리 생각하기 어려운 이유는 쓰레드 및 스프링 Bean 인스턴스 관리는 WAS나 프레임워크 영역에 가깝고 애플리케이션 개발할 때 신경을 안 쓰는 경우가 많기 때문입니다. 그래서 동시성 문제에 대한 개념을 모르면 비지니스 로직만 봤을 때 문제가 있다고 직관적으로 판단하기 힘들 수 있습니다. 이런 문제가 있다는 것 알고 난 후에는 싱글톤으로 생성된 인스턴스의 필드값을 변경하는 로직이 있는 경우 동시성 문제를 주의해.. 2022. 12. 29. [스프링 핵심 원리 - 고급편] 1. 강의 개요 [스프링 핵심 원리 - 고급편] 1. 강의 개요 인프런에서 듣는 첫 강의를 김영한 님의 스프링핵심 원리 - 고급 편으로 선택했습니다. 강의 개요를 보면 스프링에서 사용하는 핵심 디자인 패턴과 쓰레드로컬, AOP에 대해서 소개하는 강의입니다. 자주 들어본 단어들이지만 정확한 개념을 공부하기 위해 선택했고 듣는 김에 블로그에 정리하기로 했습니다. 특히 쓰레드 로컬은 현업에서 사용해 본 적이 없는 만큼 가장 기대되는 주제입니다. 강의의 모든 내용을 블로그에 정리할 필요는 없을 것 같고 알면 좋은 내용만 요약해서 정리할 예정입니다. 단순 강의 요약이 아닌 개인적인 생각이나 더 좋은 방법이 없는지를 생각하면서 강의를 정리하겠습니다. 초반 몇개의 강의를 들으면서 느낀 강의의 흐름은 다음과 같습니다. 1) 특정 조건.. 2022. 12. 26. 이전 1 다음