Spring AOP(Annotation)的使用
配置spring的配置文件:为spring加入标注,自动装配及产生代理的支持
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
?????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????? xmlns:context="http://www.springframework.org/schema/context"
?????? xmlns:aop="http://www.springframework.org/schema/aop"
?????? xsi:schemaLocation="http://www.springframework.org/schema/beans
?????????? http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
?????????? http://www.springframework.org/schema/context
?????????? http://www.springframework.org/schema/context/spring-context-2.5.xsd
??????????? http://www.springframework.org/schema/aop
?????????? http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
?
?<context:annotation-config /><!-- 为spring加入标注支持 -->
??? <context:component-scan base-package="com" /><!-- 让spring在com.model包下自己去找bean -->
??? <aop:aspectj-autoproxy /><!-- spring容器自动 产生代理-->
</beans>
?
需要织入的业务逻辑:比如记录日志,安全校验等其他逻辑
package com.aop;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect//切面
@Component
public class LogInterceptor {
?//execution方法的切入语法,public void方法的返回值,save方法名,com.model.User参数的类型
?@Before("execution(public void com.dao.UserDaoImpl.save(com.model.User))")
?? public void before() {
??? System.out.println("method start");
?? }
?@AfterReturning("execution(public * com.dao..*.*(..))")
?public void afterReturning() {
??System.out.println("method afterReturning");
?}
}
测试类:
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.model.User;
import com.service.UserService;
public class TestSpringIoc {
?
?public static void main(String[] args) {
??ApplicationContext? context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
?? User user = new User();
????? user.setPassword("sss");
????? UserService service = (UserService)context.getBean("userService");
????? service.add(user);
?}
}
?
备注:Spring的Aop需要aspectjrt.jar,aspectjrtweaver.jar两个jar包!!