码迷,mamicode.com
首页 > 编程语言 > 详细

Spring面向切面编程(二)简单AOP实例

时间:2015-03-13 12:35:56      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

简单实现一个用户登陆的功能,在用户登陆之前进行日志打印,用户登陆之后进行登陆成功日志打印。

Maven添加Spring jar

spring面向切面编程(一)AOP术语

添加Spring AOP的jar

 参考:Maven添加Spring jar

还需添加:

  技术分享

创建User类:

package com.user;

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;
    }
}

创建IUserDao:

package com.user;

public interface IUserDo
{
    public void userLogin(User user);
}

 

创建UserDao:

package com.user;

public class UserDao  implements IUserDo
{
    public void userLogin(User user)
    {
        // 添加登陆的具体实现,这里只做个例子
        System.out.println("User login business");
    }
}

 

创建UserService接口:

package com.user;

public interface UserService 
{
    public void userLogin(User user);
}

创捷接口实现UserServiceImp:

package com.user;

public class UserServiceImp implements UserService
{

       UserDao userDao;
        public void userLogin(User user)
        {
            userDao.userLogin(user);
        }
        public UserDao getUserDao() {
            return userDao;
        }
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
}

创建日志打印类LoginLog:

package com.user;

public class LoginLog
{
    public void loginLogBefore()
    {
        System.out.println("login before");
    }
    public void loginLogAfter()
    {
        System.out.println("login after");
    }
}

 创建Spring配置文件User.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: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/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

    <bean id="userDao" class="com.user.UserDao"></bean>

    <bean id="userService" class="com.user.UserServiceImp">
        <property name="userDao" ref="userDao">
        </property>
    </bean>

    <bean id="loginLog" class="com.user.LoginLog"></bean>
    
    <aop:config>
        <aop:aspect ref="loginLog">
            <!-- 前置通知 -->
            <aop:before method="loginLogBefore" pointcut="execution(* com.user.UserServiceImp.userLogin(..) )"/>
            
            <!-- 后置通知 -->
            <aop:after method="loginLogAfter" pointcut="execution(* com.user.UserServiceImp.userLogin(..) )"/>
        </aop:aspect>
    </aop:config>
</beans>

编写Junit测试类TestAop:

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

import com.user.User;
import com.user.UserService;


public class TestAop 
{
    @Test
    public void Test1()
    {
        ApplicationContext ctx =  new ClassPathXmlApplicationContext("com/user/User.xml");
        User user= new User();
        user.setPassword("123456");
        user.setUsername("abcd");
        UserService userService= (UserService) ctx.getBean("userService");
        userService.userLogin(user);
    }
}

运行测试类可见:

技术分享

 

Spring面向切面编程(二)简单AOP实例

标签:

原文地址:http://www.cnblogs.com/liuminglu/p/4332185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!