전체 글694 [Spring] 스프링 AOP 개념 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. AOP 소개 - 핵심 기능과 부가 기능 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다. 1) 핵심 기능 해당 객체가 제공하는 고유의 기능이다. 예를 들어서 OrderService 의 핵심 기능은 주문 로직이다. 2) 부가 기능 핵심 기능을 보조하기 위해 제공되는 기능이다. 예를 들어서 로그 추적 로직, 트랜잭션 기능이 있다. 이러한 부가 기능은 단독으로 사용되지 않고, 핵심 기능과 함께 사용된다. 주문 로직을 실행하기 직전에 로그 추적 기능을 사용해야 하면, 핵심 기능인 주문 로직과 .. BackEnd/Spring 2022. 8. 17. [Spring] @Aspect AOP 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. @Aspect 프록시 - 적용 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링은 @Aspect 애노테이션으로 매우 편리하게 포인트컷과 어드바이스로 구성되어 있는 어드바이저 생성 기능을 지원한다. ▶ 참고 @Aspect 는 관점 지향 프로그래밍(AOP)을 가능하게 하는 AspectJ 프로젝트에서 제공하는 애노테이션이다. 스프링은 이것을 차용해서 프록시를 통한 AOP를 가능하게 한다. AOP와 AspectJ 관련된 자세한 내용은 다음에 설명한다. 지금은 프록시에 초점을 맞추자. 우선 이 애노테이션을 사용해서 스프링이 편리하게 프록시를 만들어준다고 .. BackEnd/Spring 2022. 8. 16. [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. 이전 1 ··· 13 14 15 16 17 18 19 ··· 58 다음