Spring_demo5_AOP_Annotation

来源:互联网 发布:娱乐圈八卦知乎天涯 编辑:程序博客网 时间:2024/06/05 08:50

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:annotation-config /><context:component-scan base-package="com"/><aop:aspectj-autoproxy /></beans>

用户管理接口

package com.dao;import com.model.User;public interface UserDAO {public void save(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("Mysql: " + 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 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);}}


效果图:




原创粉丝点击