Spring 中 使用自定义Annotation 跟 Spring AOP结合
package com.hub.mymvn.aopanno;
package com.hub.mymvn.aopanno;
import org.springframework.stereotype.Component;
@Component
publicclassEmployee {
private String name;
public String getName() {
returnname;
}
@Loggable
publicvoid setName(String name) {
System.out.println("Start to set name as "+name);
this.name = name;
}
publicvoid throwException(){
thrownew RuntimeException("Dummy Exception");
}
}
====================== EmployeeService
package com.hub.mymvn.aopanno;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
publicclass EmployeeService {
@Autowired
private Employee employee;
public Employee getEmployee(){
returnthis.employee;
}
publicvoid setEmployee(Employee e){
this.employee=e;
}
}
====================== EmployeeAnnotationAspect
package com.hub.mymvn.aopanno;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
publicclassEmployeeAnnotationAspect {
@Before("@annotation(com.hub.mymvn.aopanno.Loggable)")
publicvoid myAdvice(){
System.out.println("Executing myAdvice!!");
}
/*
@Before("execution(public String getName())")
public void getNameAdvice(){
System.out.println("Executing Advice on getName()");
}
@Before("execution(* com.journaldev.spring.service.*.get*())")
public void getAllAdvice(){
System.out.println("Service method getter called");
}
*/
}
======================
package com.hub.mymvn.aopanno;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.validation.BindException;
import org.springframework.validation.Validator;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class DemoTest {
@Autowired
private EmployeeService employeeService;
@Test
public void helloTest() {
System.out.println("Start helloTest");
Employee e = employeeService.getEmployee();
System.out.println(e);
System.out.println(e.getName());
e.setName("XXX");
System.out.println(e.getName());
System.out.println("End helloTest");
}
}
======================运行结果
Start helloTest
com.hub.mymvn.aopanno.Employee@7f5338bf
null
Executing myAdvice!!
Start to set name as XXX
XXX
End helloTest