有时使用的是第三方切面类逻辑(没有源码),这样就只能使用XML配置方法。
LogInterception.java
package com.bebig.aop;

public class LogInterception {
    
public void before() {
        System.out.println(
"Log start");
    }


    
public void myMethod() {
    }
;

}

UserDAO.java
package com.bebig.dao;

import com.bebig.model.User;

public interface UserDAO {
    
public void save(User u);
    
public void deleteById(int id);
}

UserDAOImpl.java
package com.bebig.dao.impl;

import org.springframework.stereotype.Repository;
import com.bebig.dao.UserDAO;
import com.bebig.model.User;

@Repository
public class UserDAOImpl implements UserDAO {

    @Override
    
public void save(User u) {
        System.out.println(
"a user saved!");
    }


    @Override
    
public void deleteById(int id) {
        System.out.println(
"delete a user by id!");
        
    }


}

User.java
package com.bebig.model;

public class User {
    
private String username;
    
private String password;

    
public String getPassword() {
        
return password;
    }


    
public String getUsername() {
        
return username;
    }


    
public void setPassword(String password) {
        
this.password = password;
    }


    
public void setUsername(String username) {
        
this.username = username;
    }

}

UserService.java
package com.bebig.service;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;

import com.bebig.dao.UserDAO;
import com.bebig.model.User;

@Service(
"userService")
public class UserService {
    
private UserDAO userDAO;

    
public void add(User u) {
        userDAO.save(u);

    }


    
public void deleteById(int id) {
        userDAO.deleteById(id);

    }


    @Resource
    
public void setUserDAO(UserDAO userDAO) {
        
this.userDAO = userDAO;
    }


    
public UserDAO getUserDAO() {
        
return userDAO;
    }


    
public void init() {
        System.out.println(
"init.");
    }


    
public void destory() {
        System.out.println(
"destory.");
    }

}

beans.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-3.0.xsd
http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
>

    
<!-- a service object; we will be profiling its methods -->
    
<context:annotation-config />
    
<context:component-scan base-package="com.bebig" />
    
<!-- 切面类 -->
    
<bean id="logInterceptor" class="com.bebig.aop.LogInterception"></bean>

    
<aop:config>
        
<!-- 全局切点 -->
        
<aop:pointcut expression="within(com.bebig.service..*)"
            id
="servicePointcut" />
        
<!-- 切面 -->
        
<aop:aspect id="serviceAspect" ref="logInterceptor">
            
<!-- 执行的切面方法 -->
            
<aop:before method="before" pointcut-ref="servicePointcut" />
        
</aop:aspect>
    
</aop:config>

</beans>
UserServiceTest.java(测试用例)
package com.bebig.service;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.bebig.model.User;

public class UserServiceTest {

    @Test
    
public void testAdd() throws Exception {
        ClassPathXmlApplicationContext cxt 
= new ClassPathXmlApplicationContext(
                
"beans.xml");
        
// 不再需要使用Proxy对象来创建代理对象
        UserService service = (UserService) cxt.getBean("userService");
        service.add(
new User());
        service.deleteById(
1);
    }


}