Spring_demo6_AOP_XML
来源:互联网 发布:程序员考试考英语吗 编辑:程序博客网 时间:2024/06/05 03:28
bean.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-4.1.xsd "> <!--设置要扫描的包的位置 --> <context:component-scan base-package="com"/><context:annotation-config /> <!-- 支持aop注解 --> <aop:aspectj-autoproxy /><!-- 第一步配置Bean,因为切面也是一个Bean --><bean id="aopTestInterceptor" class="com.aop.AopTest"></bean><!-- 当执行execution(public * com.service..*.add(..)) 这个方法,找到这个Aop引用了aopTestInterceptor,执行add方法前执行aopTestInterceptor对象的 before方法--><!-- 第二部配置AOP --><aop:config><!-- 第三步配置切面使用的表达式 --> <!-- 第四步配置切面,指定切面类 --><aop:aspect id="testAspect" ref="aopTestInterceptor"><aop:before method="before" pointcut="execution(public * com.service..*.*(..))" /></aop:aspect></aop:config></beans>
用户管理接口
package com.dao;import com.model.User;public interface UserDAO {public void save(User user);public void delete(User user);}
用户管理接口实现
package com.dao.impl;import org.springframework.stereotype.Component;import com.dao.UserDAO;import com.model.User;@Component("userDao")public class UserDaoImpl implements UserDAO{@Overridepublic void save(User user) {System.out.println("save " + user.getUsername());}@Overridepublic void delete(User user) {System.out.println("delete " + user.getUsername());}}
切面AOP
package com.aop;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;@Aspect@Componentpublic class AopTest {//@Before("execution(public void com.dao.impl.UserDaoImpl.save(com.model.User))")//@Pointcut("execution(public * com.dao..*.*(..))")public void myMethod(){};//@Before("myMethod()")//@Before("execution(public void com.dao.impl.UserDaoImpl.save(com.model.User))")//@Before("execution(public * com.service..*.add(..))")public void before(){System.out.println("AopTest success");}}
逻辑处理Service
package com.service;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;import com.dao.UserDAO;import com.model.User;@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 默认使用userDAO(前提只有一个bean) * @Resource(name = "user2") * @param userDAO *//*@Resource*/@Resource(name = "userDao")public void setUserDAO(UserDAO userDAO) {this.userDAO = userDAO;}}
AOP测试
package com.service;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.model.User;/** * Dao主要做数据库的交互工作 * Modle 是模型 存放你的实体类 *Service 做相应的业务逻辑处理 *Action是一个控制器 * @author tao.zeng * */public class UserServiceTest {@Testpublic void testAdd() throws Exception {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");UserService service = (UserService)ctx.getBean("userService");User u = new User();u.setUsername("syw");u.setPassword("syw");service.add(u);service.delete(u);}}
AOP测试
阅读全文
0 0
- Spring_demo6_AOP_XML
- Unity编辑脚本(启动指南)-脚本对象
- handler原理分析及模仿handler实现简单主/子线程通信架构
- c++---不使用“+”实现加法操作
- 开始
- acm基础--括号配对问题
- Spring_demo6_AOP_XML
- Intellij IDEA 2017集成MyBatis三剑客
- Gson更改javabean的属性名
- Android【官方教程】NDK Android.mk
- 跳跃游戏II
- H5 video 播放器demo
- LeetCode之Sum of Left Leaves
- git暂存区[重要]
- vb.net 教程 11-1 打印组件 4 PrintDocument 1