@Around("execution(* com.sangheon.*.EventService.*())") // com.sangheon으로 시작하는 EventService의 모든 메서드에 아래 행위를 적용하라 // 포인트컷을 여러곳에서 재사용할것이 아니라면 이렇게 사용하라.
public Object logPerf(ProceedingJoinPoint pjp) { //pjp는 어드바이스가 적용되는 대상 즉 메소드 자체로 보면된다. long begin = System.currentTimeMills()); Object reVal = pjp.proceed(); return reVal; } }
위의 경우 모든 메소드에 적용된다. deleteEvent에는 적용되기를 원치 않을경우 @annotation 을 만들어서 사용해보자.
1 2 3 4 5 6 7
@Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) //컴파일까지 해당 어노테이션을 유지.. 이 줄은 생략가능 public @interface PerLogging {
}
이 후 적용되길 원하는 메소드에만 @PerLogging를 붙이자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
@PerLogging @Override public void createEvent() { //로직 }
@PerLogging @Override public void publishEvent() { //로직 }
@Override public void deleteEvent() { //로직 }
그리고 아래처럼 @Around 어노테이션을 수정하자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
@Component @Aspect public class PerfAspect {
@Around("@annotation(PerLogging)") // com.sangheon으로 시작하는 EventService의 모든 메서드에 아래 행위를 적용하라 // 포인트컷을 여러곳에서 재사용할것이 아니라면 이렇게 사용하라.
public Object logPerf(ProceedingJoinPoint pjp) { //pjp는 어드바이스가 적용되는 대상 즉 메소드 자체로 보면된다. long begin = System.currentTimeMills()); Object reVal = pjp.proceed(); return reVal; } }
이제 돌려보면 deleteEvent외에만 적용되는것을 확인할 수있다.
어드바이스 정의는 @Around 뿐만 아니라 @Before ,@AfterReturning, @AfterThrowing이 가능하다.
Posts
1. 스마트홈 구성 입문 - 필립스 휴, 스마트싱스 활용
스마트 홈 구성필립스 휴 조명을 구매하고, 이를 시리를 통한 호출 또는 자동화를 위해선 필립스 휴 브릿지가 필요하는 사실을 늦게 깨달았다.필립스 휴 조명을 더 살 생각은 없었기에 휴 브릿지를 사기엔 애매했고, 스마트싱스 스테이션이 휴 조명과 연동된다는 사실을 알게되었다
다중모니터 사용시 모니터를 bat파일로 제어
트리플 모니터를 사용 중 하나의 모니터는 필요에 따라 편하게 관리하고 싶었다.dual - triple 로 클릭만으로 전환할 수 있게 적용 1.MultiMonitorTool 설치https://www.nirsoft.net/utils/multi_monitor_tool.htm
premiere pro
premiere pro https://www.youtube.com/watch?v=VDVMGcC1zNU 프로젝트 생성 시퀀스 생성 영상 좌측 하단에 업로드 영상 좌측하단에서 우측으로 끌기 오디오 선택 후 우클릭 - 오디오 게인에서 -10 주면 잔잔하게. 오디오는 우측 창
Spring Reactive
리액티브 선언문https://www.reactivemanifesto.org 위에서 말하는 리액티브 시스템의 특징 4가지Responsive - 응답성Resilient - 유연성Elastic - 탄력성Message Driven 리액티브 스트림즈(Reactive Stream