<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          TODAY AOP輕量級 Aop 框架

          聯(lián)合創(chuàng)作 · 2023-09-30 06:55

          TODAY AOP 是一個(gè)輕量級 Aop 框架

          安裝

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

          案例

          使用說明

          使用@Aspect標(biāo)注一個(gè)切面

          @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);
          	}
          }
          
          瀏覽 25
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级a一级a爰片免费免免小说 | 大鸡八网站 | www.精品一区 | 黑人大屌三 。p 黄片免费观看永久 | 南航水野爱在线 |