aspectjweaver-1.6.8.jar:提供 @Aspect、@Before 等註解spring-aop-3.0.4.RELEASE.jar:提供 AnnotationAwareAspectJAutoProxyCreator 自動代理aopalliance-1.0.jar:定義攔截器契約<beans xmlns="https://www.springframework.org/schema/beans"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="https://www.springframework.org/schema/aop"
xsi:schemaLocation="...
https://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 啟用 @AspectJ 自動代理 -->
<aop:aspectj-autoproxy/>
<!-- 目標 Bean -->
<bean id="userManager" class="com.service.Impl.UserManagerImpl"/>
<!-- 切面 Bean -->
<bean class="com.util.SecurityHandler"/>
</beans>
public interface UserManager {
void add(User user);
}
public class UserManagerImpl implements UserManager {
private static final Log log = LogFactory.getLog(UserManagerImpl.class);
public void add(User user) {
log.debug("add User: " + user.getUsername());
}
}
@Aspect
public class SecurityHandler {
@Before("execution(* add*(..))")
private void checkSecurity() {
System.out.println("添加前檢查通過");
}
@After("execution(* add*(..))")
private void checkResult() {
System.out.println("添加後檢查通過");
}
}
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserManager um = (UserManager) ctx.getBean("userManager");
User u = new User(); u.setUsername("aaa"); u.setPassword("bbb");
um.add(u);
}
添加前檢查通過
2011-03-11 16:13:21,562 [main] DEBUG [com.service.Impl.UserManagerImpl] - add User:aaa
添加後檢查通過
缺少 spring-aop.jar 導致找不到 spring-aop-3.0.xsd,引發 XmlBeanDefinitionStoreException。確保 classpath 包含對應版本的 spring-aop 模組。