0. 이 포스트는 Spring : AOP with Java Config 시리즈의 연속이다. 1. @Around는 @Before와 @After를 같이 사용하는 것과 같다. 하지만 좀 더 섬세한 컨트롤이 가능하다. 1-1 @Around advice는 Proceeding Join Point를 받을 수 있다. 1-2 Proceeding Join Point는 타겟 메소드의 직접 호출 할 수 있다. 2. Use cases 2-1 로깅, 보안, 감사 등에 사용 2-2 데이터의 전처리, 후처리 2-3 성능 측정 2-4 예외 처리 3. 메소드의 실행시간을 측정하는 @Around advice 예제 3-1 설정 클래스는 @Configuration, @EnableAspectJAutoProxy, @ComponentScan이 설..
0. 이 포스트는 Spring : AOP with Java Config의 연속이다. 1. @After advice는 타겟 메소드에서 Exception의 발생여부과 관계없이 실행된다. 1-1 실행시점은 @AfterReturning 이나 @AfterThrowing advice가 실행되기 직전에 실행된다. 1-2 @After advice는 에러에 대한 접근이 불가능하다. 1-2-1 예외 관련 처리가 필요하면 @AfterThrowing을 추가로 구현해야 한다. 2. 사용 용도는 2-1 예외 로그를 남기거나 감사를 업무수행 2-2 결과 관계없이 처리해야 하는 리소스 해제 같은 로직 수행 3. @After는 @AfterReturning, @AfterThrowing과 같이 실행해야 동작을 확인할 수 있어 추가된 부분..
1. 이 포스트는 Spring : AOP with Java Config 시리즈의 연속이다. 2. @Afterthrowing 타겟 메소드에서 Exception이 발생한 경우에만 실행된다. 3. 주된 Use case 들 3-1 예외에 대한 로그처리 3-2 예외상황에 대한 감사(Audit) 처리 3-3 예외가 발생한 경우 이메일이나 SMS를 통한 알람 4. 아래는 boolean 변수를 사용하여 Exception을 발생시키는 예제다. 4-1 App.java 클래스에서 triggerError변수가 true일 경우 Exception이 발생한다. 4-1-1 이 경우 @AfterThrowing advice가 실행된다. 4-2 triggerError가 false일 경우 정상적으로 수행되고 @AfterReturning a..
0. 이 포스트는 Spring : AOP With Java Config 의 연속이다. 1. 타겟 메소드를 정상적으로 실행완료 후 @AfterReturning advice에서 결과값을 수정하는 예제이다. 2. @AfterReturning annotation에 몇 가지 property를 설정할 수 있다. 2-1 pointcut은 어떤 @Before의 value와 같이 pointcut expression을 지정할 수 있다. 2-1-1 아래 소스코드에서 지정한 point cut은 정확히 AccountDAO의 findAccounts 메소드를 지정하고 있다. 2-2 returning은 advice 메소드의 두 번째 인자값의 이름으로 타겟 메소드의 반환 값을 받는다. 2-2-1 아래 소스에서 AccountDAO fi..
0. 이 포스트는 Spring : AOP with Java Config 시리즈의 연속이다. 1. @AfterReturning은 타겟 메소드가 성공적으로 실행된 후 실행하게 된다. 예외가 발생하면 실행되지 않는다. 2. 실제 사용하는 상황들(@Before advice와 거의 동일하고 쌍으로 사용되는 경우가 많다.) 2-1 로깅, 보안처리, 트렌젝션 처리에 사용된다. 2-2 감사를 위한 logging에 사용될 수 있다. 사용자, 사용 메소드, 사용시점, 사용한 지점 등을 남길 수 있다. 2-3 호출자에게 값을 반환하기 전에 데이터 처리가 필요한 경우에 사용한다. 2-3-1 데이터의 포멧을 설정하거나 데이터를 추가 가공할 경우에 사용된다. 2-3-2 가공하더라도 반환 객체는 동일한 타입이어야 한다. 3. 예제..
1. 이 포스트는 Spring : AOP with Java Config 시리즈의 연속이다. 2. 종종 어떤 메소드를 실행 전후에 해당 메소드의 parameter에 접근해 데이터를 참조하거나 수정할 필요가 있다. 3. Apect 클래스에서 method argument에 접근하는 방법은 java reflect를 이용한 JoinPoint Aspectj 클래스를 사용한다. 3-1 이 예제는 복잡함을 줄이기 위해 @Order를 설정한 직전 포스트의 Aspect클래스를 사용하지 않는다. 3-2 JoinPoint클래스를 advice 메소드의 parameter로 설정하여 호출 대상 메소드의 정보를 받아온다. 3-2-1 Java reflect를 사용하기 때문에 해당 클래스에 관련 메타데이터 정보를 JoinPoint에서 ..
1. 인터페이스는 객체타입을 지정하지 않았을 때 any로 퉁치는 것을 방지하기 위해서 사용한다. const post = { title: 'A good post', content: 'great post and great article' } const printPost = (postToPrint: { title: string, content: string }) => { return `${postToPrint.title} with ${postToPrint.content}` } console.log(printPost(post)) 1-1 위의 코드의 printPost함수의 postToPrint라는 인자는 { }를 통해 type을 지정했는데 이 부분이 없으면 그냥 any다. 1-2 그래서 저렇게 길게 타입을 지정했..
1. Typescipt는 Java와 유사하게 보이는 상속과 인터페이스를 지원한다. 1-1 공공연한 사실이지만 내부적으로 Javascript는 prototype inheritance를 사용하기 때문에 1-2 완전히 다른 방식의 구현을 가지고 있다. 1-3 복잡한 생각할 필요없이 자바처럼 그냥 쓰면 된다. 2. Typescript는 Java언어와 동일하게 한 부모 상속을 지원한다. 1-1. 상속의 예시 1-2. 특이해 보이는 부분은 Driver.ts의 Shape 타입의 shapes 배열로 Shape을 상속한 클래스를 저장하고 있다. 1-2-1 polymorphism이다. 동일하게 동작함을 알 수 있다. // 부모 클래스 Shape.ts 파일 export class Shape { constructor(priv..
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib