UsageLogAspect.java
资源名称:petclinic.rar [点击查看]
上传用户:dezhong
上传日期:2022-08-10
资源大小:167k
文件大小:1k
源码类别:
Java编程
开发平台:
Java
- package org.springframework.samples.petclinic.aspects;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- /**
- * Sample AspectJ annotation-style aspect that saves
- * every owner name requested to the clinic.
- *
- * @author Rod Johnson
- * @author Juergen Hoeller
- * @since 2.0
- */
- @Aspect
- public class UsageLogAspect {
- private int historySize = 100;
- // Of course saving all names is not suitable for
- // production use, but this is a simple example.
- private List<String> namesRequested = new ArrayList<String>(this.historySize);
- public synchronized void setHistorySize(int historySize) {
- this.historySize = historySize;
- this.namesRequested = new ArrayList<String>(historySize);
- }
- @Before("execution(* *.findOwners(String)) && args(name)")
- public synchronized void logNameRequest(String name) {
- // Not the most efficient implementation,
- // but we're aiming to illustrate the power of
- // @AspectJ AOP, not write perfect code here :-)
- if (this.namesRequested.size() > this.historySize) {
- this.namesRequested.remove(0);
- }
- this.namesRequested.add(name);
- }
- public synchronized List<String> getNamesRequested() {
- return Collections.unmodifiableList(this.namesRequested);
- }
- }