SpringのAOP注釈方式

2532 ワード

注記実現AOP:1.aspectjサポートを有効にする2.うどん類に@Component、@Asppect 3を追加します.切り口式4を配置します.補強方法を追加します.注意:サラウンド強化の方法には必ずProceding JoinPointパラメータ5を追加します.接面優先度はインターフェースimplements Ordered{または@Ordered注解コードを実現します.dao注用@Repository@Repository/dao階putblic clast UserDaoImpl implemens UserDao{public void add}System.out.print n(name+「追加成功...」);public int udate(Sprintermturn.1){System.print.name}
service層、注解用@Service@Service public class UserSerrviceImpl implemens UserSerService{@Autowired prvate UserDao;public void add(String name){userDaDadededededededededededededen){userDadadaint@purdadaint@@purdadaint@bloomberg@@bloomberg@purdadaint@@bloomberg@@@bloomberg@bloomberg@purdadaint@@@bloomberg@bloomberg@bloomberg@@@@@pupurdaint/purdadaint@bloomberg@@@@@@bloomberg@bloomberg@bloomberg@bloomberg@@purdapublic class Adviice Class/implements Ordered/{/**配置切替点はxml構成の*メソッドp()に相当します.xml構成のid/@Pointcut(「execution(public*comp.gk.serviceImpl.(...)」)public void p()
}
@Before("p()")
public void before(JoinPoint jp) {  //       
	System.out.println("    ...0");
	//         
	System.out.println("      " + jp.getSignature().getName());
	//            
	Object[] args = jp.getArgs();
	if (args != null) {
		for (Object object : args) {
			System.out.println("      :" + object);
		}
	}
	//         
	UserService target = (UserService) jp.getTarget();
}
/**
 *     ,          ,         ,        
 */
@AfterReturning(value="p()", returning="result")
public void afterReturning(JoinPoint jp,Object result) {
	System.out.println("    ...         :" + result);
}
/**
 *     ,         ,       
 */
@After("p()")
public void after(JoinPoint jp) {
	System.out.println("    ...");
}
/**
 *      :    ,           ,                ,            
 * @return 
 * @throws Throwable 
 */
@Around("p()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
	System.out.println("    ...");
	Object proceed = pjp.proceed();  //       

	System.out.println("    ...");
	return proceed;
}
/**
 *      :             
 * @param jp
 * @param e
 */
@AfterThrowing(value="p()", throwing="e")
public void exception(JoinPoint jp, Exception e) {
	System.out.println("    " + jp.getTarget().getClass() + "  " + jp.getSignature().getName() +"      " + e.getMessage() + "  ");
}
/*public int getOrder() {     //    Ordered  ,        
	return 2;
}*/
)
注:ソートを実現するには、いくつかの拡張クラスを書くことができますが、ここでは書き込みの拡張クラスを繰り返しません.