TODAY AOP轻量级 Aop 框架
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); } }
评论
Norns.Urd轻量级 AOP 框架
Norns.Urd是一个基于emit实现动态代理的轻量级AOP框架。版本基于netstandard2.0.所以哪些.net版本能用你懂的。完成这个框架的目的主要出自于个人以下意愿:静态AOP和动态AO
Norns.Urd轻量级 AOP 框架
0
FastAOP高性能 AOP 框架
FastAOP是一个高性能AOP框架。最初开发该框架是为了支持对大型J2EE应用程序进行性能剖析和监测。它几乎不占用运行时间。FastAOP已经在Websphere和Jboss应用服务器上得到成功测试
FastAOP高性能 AOP 框架
0
AspectDFlutter(Dart) AOP 框架
AspectD是一个 DartAOP(AspectOrientedProgramming,面向切面编程)框架,与其它传统的AOP框架一样,AspectD提供了调用和执行语法。此外,AspectD还
AspectDFlutter(Dart) AOP 框架
0
AspectDFlutter(Dart) AOP 框架
AspectD 是一个 Dart AOP(Aspect Oriented Programming,面
AspectDFlutter(Dart) AOP 框架
0