Spring_AOP_Xml
1.目录结构

2.User
package com.cloud.spring.model; /** * @author cloud * @data 2016年5月13日 * @version 1.0 * @description:普通的JavaBean */ public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
3.UserDAO
package com.cloud.spring.dao; import com.cloud.spring.model.User; /** * @author cloud * @data 2016年5月13日 * @version 1.0 * @description:定义接口,定义规范,必须实现save方法 */ public interface UserDAO { public void save(User user); public void delete(User user); }
4.UserDAOImpl
package com.cloud.spring.dao.imp; import org.springframework.stereotype.Component; import com.cloud.spring.dao.UserDAO; import com.cloud.spring.model.User; /** * * @author cloud * @data 2016年5月13日 * @version 1.0 * @description:实现接口,重写方法 */ @Component public class UserDAOImpl implements UserDAO { public void save(User user) { System.out.println("user saved!"); } public void delete(User user) { System.out.println("user delete!"); } }
5.UserService
package com.cloud.spring.service; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.cloud.spring.dao.UserDAO; import com.cloud.spring.model.User; /** * * @author cloud * @data 2016年5月13日 * @version 1.0 * @description:真正的业务处理 */ @Component("userService") public class UserService { private UserDAO userDAO; public void add(User user) { userDAO.save(user); } public void delete(User user) { userDAO.delete(user); } public UserDAO getUserDAO() { return userDAO; } @Resource public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } }
6.LogIntercepter
package com.cloud.spring.aop; public class LogIntercepter { public void before(){ System.out.println("method before"); } public void afterReturning(){ System.out.println("method after returning"); } public void around(){ System.out.println("method around"); } }
7.TestSpring
package com.cloud.spring.test; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cloud.spring.model.User; import com.cloud.spring.service.UserService; public class TestSpring { public static void main(String[] args) { try { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); UserService service = (UserService)ctx.getBean("userService"); service.add(new User()); service.delete(new User()); } catch (BeansException e) { e.printStackTrace(); } } }
8.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.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"> <context:component-scan base-package="com.cloud.spring" /> <!-- 声明切面类 --> <bean id="logIntercepter" class="com.cloud.spring.aop.LogIntercepter"></bean> <!-- 配置切入点,设置切入方法 --> <!-- 执行dao.impl包及其子包中的方法时,发现表达式 --> <!-- 这个表达式有被引用的切面类 --> <!-- 于是在执行执行dao.impl包及其子包中的方法之前首先执行这个切面类中的before方法 --> <aop:config> <aop:pointcut expression="execution(* com.cloud.spring.dao.imp..*.*(..))" id="userDaoPointcut" /> <aop:aspect id="logAspect" ref="logIntercepter"> <!--可以参考切面语法 --> <aop:before method="before" pointcut-ref="userDaoPointcut" /> <!--也可以直接写切面语法表达式 --> <aop:around method="around" pointcut="execution(* com.cloud.spring.dao.imp..*.*(..))" /> <aop:after-returning method="afterReturning" pointcut-ref="userDaoPointcut" /> </aop:aspect> </aop:config> <!-- 1.pointcut-ref="userDaoPointcut"指定表达式 --> <!-- 2.before method="before" 指定Advise是@Before,@AfterReturning,@Around... --> <!-- 3.id="logAspect" ref="logIntercepter"指定需要织入的切面类 --> <!-- 4.最终的效果就是com.cloud.spring.dao.imp包及其子包下的所有类的所有方法执行之前 织入com.cloud.spring.test.LogInterceper切面类下的before方法 --> </beans>
    http://www.cnblogs.com/makexu/

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号