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()
注:ソートを実現するには、いくつかの拡張クラスを書くことができますが、ここでは書き込みの拡張クラスを繰り返しません.
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;
}*/
)注:ソートを実現するには、いくつかの拡張クラスを書くことができますが、ここでは書き込みの拡張クラスを繰り返しません.