?
?
?
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
?
?
?
?
?
Spring 中 使用自定义Annotation 和 Spring AOP结合
原文:http://kavinhub.iteye.com/blog/2279813