프록시 패턴 프록시 패턴은 하나의 객체가 다른 객체의 대리자 역할을 하도록 설계하는 디자인 패턴으로 대리자는 실제 객체와 동일한 인터페이스를 가지며, 클라이언트는 실제 객체를 직접 사용하는 대신 대리자를 통해 간접적으로 상호작용한다. 이 패턴을 사용함으로써 얻는 이점은 다음과 같다 : 1. 로깅 : 프록시 객체는 클라이언트의 요청과 실제 객체의 작업 결과를 로깅할 수 있다. 2. 보안 강화 : 프록시 객체가 클라이언트의 요청을 검증하고 필요한 권한 확인 등의 작업을 수행함으로써 보안상의 이점을 가져간다. 3. 성능 최적화 : 실제 객체가 생성 및 초기화에 많은 비용이 드는 경우, 프록시 객체를 사용하여 실제 객체가 필요한 시점에 생성하거나 초기화할 수 있다. 스프링에서는 프록시 객체를 만드는 여러 가지 ..
서론 최근에 인턴 면접관으로 참여할 일이 생겨 지원자들이 제출한 코드를 훑어보던 중 재밌는 코드를 발견했습니다. @Component public class SessionStore { // key : userId // value : session string private final HashMap memorySession = new HashMap(); // CRUD method ... } 바로 유저의 세션을 인 메모리 방식으로 관리하는 컴포넌트가 정의되어 있었습니다. 유저의 세션을 인 메모리 방식으로 구현한 것도 흥미로웠는데 무엇보다 싱글톤 빈에 정의한 멤버 변수에 이목이 끌렸습니다. 빈의 생명주기에 대해서 공부할 때 줄곧 싱글톤 빈에 상태를 저장하지 말라고 배웠으니 말이죠. 그렇다면 앞선 코드는 정상 동..
✍️ 서론 이벤트의 콜백 메서드를 인터페이스의 추상 메서드로 정의하고, 이벤트에 관심 있는 클래스는 콜백 인터페이스를 구현함으로써 간단한 Listener를 만들 수 있다. 예제 코드로 이해해 보자. 여기 Member의 가입 로직이 포함된 MemberService가 있고, @Service public class MemberServiceImpl implements MemberService { @Autowired private MemberDao memberDao; @Override public void join(int memberId, String name) { Member exist = memberDao.get(memberId); if (exist != null) throw new RuntimeExcepti..
본 포스팅의 내용은 인프런 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 기반으로 작성했습니다. 🌱 AOP가 필요한 상황 예를 들어, 모든 메서드의 호출 시간을 측정하고 싶다면? 어느 날 직장 상사가 어플리케이션의 모든 메서드 호출 시간(초)을 측정하라고 지시했다. 밤을 새며 아래와 같이 모든 메서드에 하나하나 시간 측정하는 로직을 추가했다. public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } /..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.