분류 전체보기692 [Spring] 빈 후처리기 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. 스프링이 제공하는 빈 후처리기1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링이 제공하는 자동 후처리기를 사용하기 위해서는, 다음 의존성을 꼭 추가해야줘야 한다. implementation 'org.springframework.boot:spring-boot-starter-aop' 라이브러리를 추가하면 aspectjweaver 라는 aspectJ 관련 라이브러리를 등록하고, 스프링 부트가 AOP 관련 클래스를 자동으로 스프링 빈에 등록한다. ▶ (AnnotationAwareAspectJ)AutoProxyCreator 스프링 부트 자동 설정으로 .. BackEnd/Spring 2022. 8. 16. [백준][C++] 2302번: 극장 좌석 <239> 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. https://www.acmicpc.net/problem/2302 2302번: 극장 좌석 주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 HTML 삽입 미리보기할 수 없는 소스 1) 일반석 1자리만 있는 경우 당연히 해당 1자리만 앉으면 끝이니 1가지 경우이다. DP[1] = 1 이 된다. 2) 일반석 2자리만 있는 경우 이 경우는 2가지 경우가 가능한데, 다음과 같이 가능하다. [A][B] [B][A].. Algorithm/백준 2022. 8. 16. ATDD, 클린 코드 with Spring 5기 후기 어느덧 ATDD과정 또한 수료하게 되었다. 나 같은 경우 미션 4개를 모두 수행하고, 리뷰어와 의견을 잘 나누면서 나름 성공적으로 과정을 수료한 것 같다. 1. 과정 소개 ATDD, Clean Code with Spring 과정은 스프링 웹 애플리케이션을 개발하는 과정에서 ATDD(인수 테스트 주도 개발) 프로세스를 경험하고 클린코드 작성과 인수 테스트 기반 리팩터링에 대해 고민해보는 과정이다. 위와 같은 순서로 수업이 진행된다. 매주 목요일 7시 30분부터 10시 30분까지 주당 3시간씩 수업이 있었다. 과제 하나당 1주일씩 잡으면 되는데, 목요일날 3시간 수업을 듣고 난 후 그다음 주 목요일 전까지 해당 주차의 미션을 완주하면 된다. (다만 2주차 과제는 2주가 주어진다, 2주라 정말 다행이라 느껴지.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 8. 15. [Review] ATDD 4주차 3차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 문서화의 범위 현재 경로 조회하는 "/paths" API는 로그인 여부와 상관 없이 모든 유저가 호출할 수 있습니다! 추가로 로그인 한 유저같은 경우 경로 조회시 회원의 나이마다 적용되는 할인 정책이 다른데, 이 API는 로그인을 한 경우와, 하지 않는 경우를 나눠서 문서화 해야하는지 궁금합니다! 정책과 스펙 사이의 고민이였던 것 같다. 리뷰어의 말씀이 타당한것 같다. API 문서는 스펙을 보여주는 문서지, 정책사항까지 보여줄 필요는 없는것 같다. 따라서 응답 값이 동일하니 따로 정리하지 않는쪽으로 방향을 정하였다. 2. 리뷰 정리 2-1) Hook 메서드의 사용 해당 메서드의 로직은 다음과 같다. public abstract class.. NEXT STEP/Review 정리 2022. 8. 15. [Spring] 빈 후처리기 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 후처리기 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 @Bean 이나 컴포넌트 스캔으로 스프링 빈을 등록하면, 스프링은 대상 객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록한다. 그리고 이후에는 스프링 컨테이너를 통해 등록한 스프링 빈을 조회해서 사용하면 된다. ▶ 빈 후처리기 - BeanPostProcessor 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶다면 빈 후처리기를 사용하면 된다. 1) 생성: 스프링 빈 대상이 되는 객체를 생성한다. (@Bean , 컴포넌트 스캔 모두 .. BackEnd/Spring 2022. 8. 15. [Spring] 스프링이 지원하는 프록시 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번 글 에서는 지난번 ProxyFactory에 이어서 포인트컷, 어드바이스, 어드바이저 에 대하여 학습해보자! 4. 포인트컷, 어드바이스, 어드바이저 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 AOP를 공부했다면 다음과 같은 단어를 들어보았을 것이다. 포인트컷( Pointcut ) 어디에 부가 기능을 적용할지, 말지를 판단하는 필터링 로직이다. 주로 클래스와 메서드 이름으로 필터링 한다. 이름 그대로 어떤 포인트(Point)에 기능을 적용할지 하지 않을지 잘라서(cut) 구분하는 것이다. 어드바이스( Advice ) 이전에 본 것 처.. BackEnd/Spring 2022. 8. 14. [Spring] 스프링이 지원하는 프록시 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 이번 시간에는 프록시 팩토리 에 대하여 학습해보자! 1. 프록시 팩토리 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 몇가지 질문을 통해 프록시 팩토리의 특징에 대하여 알아보자! 1-1) 인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB을 적용하려면 어떻게 해야할까? 스프링은 동적 프록시를 통합해서 편리하게 만들어주는 프록시 팩토리( ProxyFactory )라는 기능을 제공한다. 이전에는 상황에 따라서 JDK 동적 프록시를 사용하거나, 또는 CGLIB를 사용해야 했다. 하지만 Spring의 프록시 팩토리.. BackEnd/Spring 2022. 8. 14. [Spring] 동적 프록시 기술 - JDK, CGLIB 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 리플랙션 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난번 글 에서 Proxy의 단점으로 대상 클래스 수 만큼 로그 추적을 위한 프록시 클래스를 만들어야 한다는 점을 언급했었다. 다행이 Java는 JDK 동적 프록시 기술이나 CGLIB 같은 프록시 생성 오픈소스 기술을 활용하면 프록시 객체를 동적으로 만들어낼 수 있다. 프록시를 적용할 코드를 하나만 만들어두고 동적 프록시 기술을 사용해서 프록시 객체를 찍어내면 된다! JDK 동적 프록시의 이해를 위해서는 우선 리플렉션에 대하여 학습해야한다. 리플렉션 기술을 사용하면 클래스나 메서드의 메타정보를 .. BackEnd/Spring 2022. 8. 13. [TIL] 일일 회고 2022/08/12 요즘 한 일 1. 리뷰 정리 https://blogshine.tistory.com/502 [Review] ATDD 4주차 1차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 인수테스트 작성과 문서 작성 우선 ATDD 사이클에 의하여 인수테스트 작성 RestDocs 작성 순서로 진행하게 되었습니다. 다만 인수테스트 blogshine.tistory.com https://blogshine.tistory.com/508 [Review] ATDD 4주차 2차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 리뷰 정리 1-1) 최단 경로 구하는 로직 원래 Service에서 최단 경로를 구하는 로직은 다음과 같았습니다. public PathResponse findShortestPa.. NEXT STEP/회고록 2022. 8. 12. [Review] ATDD 4주차 2차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 리뷰 정리 1-1) 최단 경로 구하는 로직 원래 Service에서 최단 경로를 구하는 로직은 다음과 같았습니다. public PathResponse findShortestPath(Long source, Long target, PathCondition pathCondition) { Station upStation = stationService.findById(source); Station downStation = stationService.findById(target); List lines = lineService.findLines(); SubwayMap subwayMap = new SubwayMap(lines); Path path = subwayMap.. NEXT STEP/Review 정리 2022. 8. 12. [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. 이전 1 ··· 13 14 15 16 17 18 19 ··· 58 다음