17Spring实战:利用AOP实现日志监控
Posted 大扑棱蛾子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17Spring实战:利用AOP实现日志监控相关的知识,希望对你有一定的参考价值。
本例用利用AOP来实现记录用户登录的功能。
登录业务
这里我们简单写,在实际使用时与此类似
//用户Bean
package com.codestd.springstudy.log;
public class User
private String username;
private String password;
public User()
super();
public User(String username, String password)
super();
this.username = username;
this.password = password;
业务类
//自定义登录异常
public class AuthenticationException extends Exception
private static final long serialVersionUID = -5160585885606759616L;
public AuthenticationException(String message)
super(message);
//接口
public interface UserService
public void login(User user) throws AuthenticationException;
//实现类
public class UserServiceImpl implements UserService
@Override
public void login(User user) throws AuthenticationException
if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword()))
System.out.println("登录成功");
else
throw new AuthenticationException("用户名密码错误!");
AOP切面
@Aspect
public class LoginMonitor
@Pointcut("execution(* com.codestd.springstudy.log.UserService.login(..))")
public void loginPointcut();
@Around("loginPointcut()")
public Object afterLogin(ProceedingJoinPoint point) throws Throwable
User user = (User) point.getArgs()[0];
System.out.println(user.getUsername()+"请求登录系统");
Object obj ;
try
obj = point.proceed();
catch (Throwable e)
System.out.println(user.getUsername()+"登录失败!"+e.getMessage());
throw e;
System.out.println(user.getUsername()+"已登录系统");
return obj;
配置
<bean id="userService" class="com.codestd.springstudy.log.UserServiceImpl" />
<bean class="com.codestd.springstudy.log.LoginMonitor" />
<aop:aspectj-autoproxy /> <!-- 支持@Aspect注解 -->
测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:log/applicationContext.xml")
public class UserServiceImplTest
@Autowired
private UserService userService;
@Test
public void testLogin() throws AuthenticationException
User user = new User("admin","admin");
userService.login(user);
/*
admin请求登录系统
登录成功
admin已登录系统
------------------------
admin请求登录系统
admin登录失败!用户名密码错误!
*/
以上是关于17Spring实战:利用AOP实现日志监控的主要内容,如果未能解决你的问题,请参考以下文章
『互联网架构』软件架构-spring之AOP场景实战(11)