首页 > 编程语言 > 详细

Spring 中 使用自定义Annotation 和 Spring AOP结合

时间:2016-03-02 02:12:32      阅读:388      评论:0      收藏:0      [点我收藏+]


bubuko.com,布布扣

?

?

======================Loggable?

package?com.hub.mymvn.aopanno;
?
public?@interface?Loggable?{
?
}
?
======================Employee

?

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!