@Component public class UserService { private UserDAO userDAO; public void add(User u){ this.userDAO.save(u); } public UserDAO getUserDAO() { return userDAO; } @Resource(name="userDAOImpl") public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } }
@Resource自动装配
二。配置applicationContext.xml文件
<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置自动装配 AutowiredAnnotationBeanPostProcessor等接口,实现注入等功能 --> <context:annotation-config/> <!-- 配置扫描包路径 --> <context:component-scan base-package="com.job"/> <!-- 配置aop自动代理 --> <aop:aspectj-autoproxy/> </beans>
三。编写切面类
@Aspect @Component public class LogInteceptor { @Before("execution(public void com.job.dao.UserDAOImpl.save(com.job.model.User))") public void beforeMethod(){ System.out.println("Method start!"); } @Pointcut("execution (public * com.job.dao..*.save(..))") public void method(){ }; @Before("method()") public void beforeMethod(){ System.out.println("Method start!"); } @Around("method()") public void around(ProceedingJoinPoint pjp) throws Throwable{ System.out.println("around before!"); pjp.proceed(); System.out.println("around after"); } }
注:首先一定要注册为组件@Component
其次注册为切面
@Before("execution(public void com.job.dao.UserDAOImpl.save(com.job.model.User))")
@Before表示调用方法前执行。
execution(public void com.job.dao.UserDAOImpl.save(com.job.model.User))表示执行特定的类名.方法名方法
"execution (public * com.job.dao..*.save(..))"
..表示包含子包
*表示任何类
四。测试
public class UserServiceTest { @Test public void test(){ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service = (UserService)ac.getBean("userService"); User u = new User(); u.setUsername("me haha "); service.add(u); } }
五。测试结果
Method start!
me haha ---haha!