TODAY AOP 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
TODAY AOP 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: GPL
开发语言: Java
操作系统: 跨平台
收录时间: 2019-11-25
提 交 者: TAKETODAY

TODAY AOP 是一个轻量级 Aop 框架

安装

<dependency>
    <groupId>cn.taketoday</groupId>
    <artifactId>today-aop</artifactId>
    <version>1.0.5.RELEASE</version>
</dependency>

案例

使用说明

使用@Aspect标注一个切面

@Aspect
@Order(Ordered.HIGHEST_PRECEDENCE)
public class LogAspect {

	@AfterReturning(Logger.class)
	public void afterReturning(@Returning Object returnValue) {
		log.debug("@AfterReturning returnValue: [{}]", returnValue);
	}

	@AfterThrowing(Logger.class)
	public void afterThrowing(@Throwing Throwable throwable) {
		log.error("@AfterThrowing With Msg: [{}]", throwable.getMessage(), throwable);
	}

	@Before(Logger.class)
	public void before(@Annotated Logger logger, @Argument User user) {
		log.debug("@Before method in class with logger: [{}] , Argument:[{}]", logger, user);
	}

	@After(Logger.class)
	public Object after(@Returning User returnValue, @Arguments Object[] arguments) {
		log.debug("@After method in class");
		return returnValue.setSex("女");
	}

	@Around(Logger.class)
	public Object around(@JoinPoint Joinpoint joinpoint) throws Throwable {
		log.debug("@Around Before method");
//		int i = 1 / 0;
		Object proceed = joinpoint.proceed();
		log.debug("@Around After method");
		return proceed;
	}
}

public @interface Logger {
	/** operation */
	String value() default "";
}

@Service
public class DefaultUserService implements UserService {

	@Autowired
	private UserDao userDao;

	@Logger("登录")
	@Override
	public User login(User user) {
		log.debug("login");
//		int i = 1 / 0;
		return userDao.login(user);
	}
	@Logger("注册")
	@Override
	public boolean register(User user) {
		return userDao.save(user);
	}
}
@Repository
public class UserDaoImpl implements UserDao {

	private Map<String, User> users = new HashMap<>();

	public UserDaoImpl() {
		users.put("666", new User(1, "杨海健", 20, "666", "666", "男", new Date()));
		users.put("6666", new User(2, "杨海健1", 20, "6666", "6666", "男", new Date()));
		users.put("66666", new User(3, "杨海健2", 20, "66666", "66666", "男", new Date()));
		users.put("666666", new User(4, "杨海健3", 20, "666666", "666666", "男", new Date()));
	}

	@Override
	public boolean save(User user) {
		users.put(user.getUserId(), user);
		return true;
	}
	@Override
	public User login(User user) {

		User user_ = users.get(user.getUserId());
		if (user_ == null) {
			return null;
		}
		if (!user_.getPasswd().equals(user.getPasswd())) {
			return null;
		}
		return user_;
	}
}

@Test
public void test_Login() throws NoSuchBeanDefinitionException {

	try (ApplicationContext applicationContext = new StandardApplicationContext("","")) {
		UserService bean = applicationContext.getBean(UserServiceImpl.class);
		User user = new User();
		user.setPasswd("666");
		user.setUserId("666");
		
		long start = System.currentTimeMillis();
		User login = bean.login(user);
		log.debug("{}ms", System.currentTimeMillis() - start);
		log.debug("Result:[{}]", login);
		log.debug("{}ms", System.currentTimeMillis() - start);
	}
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

TODAY AOP 的相关资讯

还没有任何资讯

TODAY AOP 的相关博客

live for today

活在当下,live for today

I have a dream today!

 临近过年,回顾2015,感慨万千。 而立之年,一无所有,仿佛又拥有了一切。 对这即将逝去的青春,总想说些什么。 对于我的每...

Share Today

当问[一生中最大的错误是什么?]时,佛陀回答: 最大的错误就是你以为你还有时间 时间是免费的也是无价的 你无法拥有 但可以花...

today search

Vue超好玩的新特性:在CSS中使用JS变量 「算法与数据结构」梳理6大排序算法 没用过消息队列?一文带你体验RabbitMQ收发消息 ...

today search

Vue超好玩的新特性:在CSS中使用JS变量 「算法与数据结构」梳理6大排序算法 没用过消息队列?一文带你体验RabbitMQ收发消息 ...

today search

Vue超好玩的新特性:在CSS中使用JS变量 「算法与数据结构」梳理6大排序算法 没用过消息队列?一文带你体验RabbitMQ收发消息 ...

today was revised to reflec

today was revised to reflec

aop

spring in action 第四章

TODAY AOP 的相关问答

还没有任何问答,马上提问

评论 (0)

加载中
更多评论
0 评论
4 收藏
分享
返回顶部
顶部