분류 전체보기694 [Spring] 인터페이스, 구체 클래스 기반 프록시 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 인터페이스 기반 프록시 - 적용 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 프록시를 사용하면 기존 코드를 전혀 수정하지 않고 로그 추적 기능을 도입할 수 있다! 로그 추적 기능을 도입해보자! 잠시 V1 버전의 클래스 의존 관계를 살펴보면 다음과 같다. Controller , Service , Repository 각각 인터페이스에 맞는 프록시 구현체를 추가하면, 의존 관계는 다음과 같다. Repository의 의존 관계 그림 부분은 생략하였다. 런타임 의존 관계는 다음과 같아진다. 그리고 애플리케이션 실행 시점에 프록시를 사용하도록 의존 관계를 설.. BackEnd/Spring 2022. 8. 10. [Spring] 데코레이터 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 데코레이터 패턴 - 예제 코드1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 간단하게 예제 코드를 만들어보자! 이전 Proxy 패턴과 거의 유사하다. 또한 코드가 매우 간단하여 설명은 생략한다. ▶ Component public interface Component { String operation(); } ▶ RealComponent @Slf4j public class RealComponent implements Component { @Override public String operation() { log.info("RealComponent 실행.. BackEnd/Spring 2022. 8. 10. [Spring] 프록시 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 프록시 패턴, 데코레이터 패턴 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 프록시는 아무 객체나 프록시가 될수있는것은 아니다. 객체에서 프록시가 되려면, 클라이언트는 서버에게 요청을 한 것인지, 프록시에게 요청을 한 것인지 조차 몰라야 한다. 쉽게 이야기해서 서버와 프록시는 같은 인터페이스를 사용해야 한다. 그리고 클라이언트가 사용하는 서버 객체를 프록시 객체로 변경해도 클라이언트 코드를 변경하지 않고 동작할 수 있어야 한다. 클래스 의존관계를 보면 클라이언트는 서버 인터페이스( ServerInterface )에만 의존한다. 그리고 서버와.. BackEnd/Spring 2022. 8. 10. [Spring] 프록시 패턴과 데코레이터 패턴 예제 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번 시간에는 우선 예제 프로젝트부터 만들어보자! 디자인 패턴에 대한 글을 다음 게시물 부터 시작할 예정이다. 1. 예제 프로젝트 만들기 v1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번 글 에서는 다음 글에서 설명할 데코레이터, 프록시 패턴을 위한 준비 예제 작업 시간이다. 설명보다는 단순 코드만 많은 점 양해 부탁 드립니다. 예제는 크게 3가지 상황으로 만든다. v1 - 인터페이스와 구현 클래스 - 스프링 빈으로 수동 등록 v2 - 인터페이스 없는 구체 클래스 - 스프링 빈으로 수동 등록 v3 - 컴포넌트 스캔으로 스프링 빈 자동 등록 V1 -.. BackEnd/Spring 2022. 8. 9. [백준][C++] 15486번: 퇴사 2 <238> 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. https://www.acmicpc.net/problem/15486 15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net 생각의 흐름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 N의 범위가 150만 이라서 완전탐색 이런 방식으로는 절대 해결할수 없다 생각하였다. 그리고 문제 자체에서 DP smell이 엄청나게 느껴졌다. 바로 동적계획법을 적용시켜보려 노력하였다... Algorithm/백준 2022. 8. 9. [Review] ATDD 4주차 1차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 인수테스트 작성과 문서 작성 우선 ATDD 사이클에 의하여 인수테스트 작성 RestDocs 작성 순서로 진행하게 되었습니다. 다만 인수테스트를 작성했을때 최단 시간으로 경로를 찾는 인수테스트가 통과를 하지는 못하는 상황 이였습니다. @DisplayName("두 역의 최단 시간 경로를 조회한다.") @Test void findPathByTime() { // when ExtractableResponse response = 두_역의_최단_시간_경로_조회를_요청(교대역, 양재역); // then assertThat(response.jsonPath().getList("stations.id", Long.class)).containsExactly(교.. NEXT STEP/Review 정리 2022. 8. 8. [Spring] 템플릿 콜백 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 템플릿 콜백 패턴 - 시작 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난 번 전략패턴 글에서 ContextV2 는 변하지 않는 템플릿 역할을 한다. 그리고 변하는 부분은 파라미터로 넘어온 Strategy에 해당된다. 이렇게 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 콜백(callback)이라 한다. 콜백 정의 프로그래밍에서 콜백(callback) 또는 콜애프터 함수(call-after function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니.. BackEnd/Spring 2022. 8. 7. [Spring] 전략 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 전략 패턴 - 예제1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 우선 다음과 같은 코드가 있다고 해보자. @Slf4j public class ContextV1Test { @Test void strategyV0() { logic1(); logic2(); } private void logic1() { long startTime = System.currentTimeMillis(); //비즈니스 로직 실행 log.info("비즈니스 로직1 실행"); //비즈니스 로직 종료 long endTime = System.currentTimeMillis(); lo.. BackEnd/Spring 2022. 8. 7. [TIL] 일일 회고 2022/08/06 요즘 한 일 1. 리뷰 정리 https://blogshine.tistory.com/492 [Review] ATDD 3주차 2차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 공통의 테스트를 만들었어야 하는가? 미션중 TokenAuthenticationInterceptor와 UsernamePasswordAuthenticationFilter 를 추상화 하는 단계에서는,.. blogshine.tistory.com https://blogshine.tistory.com/496 [Review] ATDD 3주차 3차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) Bearer 인증방식에서 권한이 없을 경우 public abstract class Authenticat.. NEXT STEP/회고록 2022. 8. 6. [Spring] 템플릿 메서드 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 템플릿 메서드 패턴 - 예제1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간은 TemplateMethod Pattern을 적용할 예제를 만들어보자. @Slf4j public class TemplateMethodTest { @Test void templateMethodV0() { logic1(); logic2(); } private void logic1() { long startTime = System.currentTimeMillis(); //비즈니스 로직 실행 log.info("비즈니스 로직1 실행"); //비즈니스 로직 종료 long en.. BackEnd/Spring 2022. 8. 6. [Spring] 쓰레드 로컬 - ThreadLocal - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. ThreadLocal - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다. 쉽게 이야기해서 물건 보관 창구를 떠올리면 된다. 여러 사람이 동일한 물건 보관 창구의 직원에게 물건을 전달하면, 직원은 사용자를 인식해서 사용자별로 확실하게 물건을 구분해준다. 쓰레드 로컬을 사용하면 각 Thread마다 별도의 내부 저장소를 제공한다. 따라서 같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제 없다. thread-A 가 userA 라는 값을 저장하면 쓰레드 로컬은 thread-A 전용 보관.. BackEnd/Spring 2022. 8. 5. [Review] ATDD 3주차 3차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) Bearer 인증방식에서 권한이 없을 경우 public abstract class AuthenticationChainingFilter implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(isAlreadyLoginUser()) { return true; } try { AuthenticationToken token = convert(request); UserDetails userDetails = findU.. NEXT STEP/Review 정리 2022. 8. 4. 이전 1 ··· 14 15 16 17 18 19 20 ··· 58 다음