@ReadLock(name = "lock", key = "#id1 + \"-\" + #id2", leaseTime = 5000L, waitTime = 60000L, async = false, fair = false) String doR(String id1, String id2); }
@Lock(name = "lock", key = "#id1 + \"-\" + #id2", leaseTime = 5000L, waitTime = 60000L, async = false, fair = false) String doA(String id1, String id2);
Lock lockAnnotation = getLockAnnotation(invocation); if (lockAnnotation != null) { String name = lockAnnotation.name(); String key = lockAnnotation.key(); long leaseTime = lockAnnotation.leaseTime(); long waitTime = lockAnnotation.waitTime(); boolean async = lockAnnotation.async(); boolean fair = lockAnnotation.fair(); String name = readLockAnnotation.name(); String key = readLockAnnotation.key(); long leaseTime = readLockAnnotation.leaseTime(); long waitTime = readLockAnnotation.waitTime(); boolean async = readLockAnnotation.async(); boolean fair = readLockAnnotation.fair(); String name = writeLockAnnotation.name(); String key = writeLockAnnotation.key(); long leaseTime = writeLockAnnotation.leaseTime(); long waitTime = writeLockAnnotation.waitTime(); boolean async = writeLockAnnotation.async(); boolean fair = writeLockAnnotation.fair();
@SpringBootApplication @EnableLock @ComponentScan(basePackages = { "com.nepxion.aquarius.example.lock.service" }) public class LockAopApplication {
@WriteLock(name = "lock", key = "#id1 + \"-\" + #id2", leaseTime = 15000L, waitTime = 60000L, async = false, fair = false) public String doW(String id1, String id2) { try { TimeUnit.MILLISECONDS.sleep(10000L); } catch (InterruptedException e) { e.printStackTrace(); } LOG.info("doW - write lock is got"); return "W"; } }
Lock lockAnnotation = getLockAnnotation(invocation); if (lockAnnotation != null) { String name = lockAnnotation.name(); String key = lockAnnotation.key(); long leaseTime = lockAnnotation.leaseTime(); long waitTime = lockAnnotation.waitTime(); boolean async = lockAnnotation.async(); boolean fair = lockAnnotation.fair(); String name = readLockAnnotation.name(); String key = readLockAnnotation.key(); long leaseTime = readLockAnnotation.leaseTime(); long waitTime = readLockAnnotation.waitTime(); boolean async = readLockAnnotation.async(); boolean fair = readLockAnnotation.fair(); String name = writeLockAnnotation.name(); String key = writeLockAnnotation.key(); long leaseTime = writeLockAnnotation.leaseTime(); long waitTime = writeLockAnnotation.waitTime(); boolean async = writeLockAnnotation.async(); boolean fair = writeLockAnnotation.fair();
@SpringBootApplication @EnableLock @ComponentScan(basePackages = { "com.nepxion.aquarius.example.lock.service" }) public class ReadWriteLockAopApplication {
@Lock(name = "lock", key = "#id1 + \"-\" + #id2", leaseTime = 5000L, waitTime = 60000L, async = false, fair = false) public String doC(String id1, String id2) { try { TimeUnit.MILLISECONDS.sleep(2000L); } catch (InterruptedException e) { e.printStackTrace(); } LOG.info("doC - lock is got"); return "C"; }
@RequestMapping(path = "/doB", method = RequestMethod.GET) @ReadLock(name = "lock", key = "#id1 + \"-\" + #id2", leaseTime = 5000L, waitTime = 60000L, async = false, fair = false) public String doB(@RequestParam String id1, @RequestParam String id2) { LOG.info("doB"); return "B"; }
@RequestMapping(path = "/doC", method = RequestMethod.GET) @WriteLock(name = "lock", key = "#id1 + \"-\" + #id2", leaseTime = 5000L, waitTime = 60000L, async = false, fair = false) public String doC(@RequestParam String id1, @RequestParam String id2) { LOG.info("doC"); return "C"; } }
@SpringBootApplication @EnableLock @ComponentScan(basePackages = { "com.nepxion.aquarius.example.lock.service" }) public class LockApplication {
@RequestMapping(path = "/doA", method = RequestMethod.GET) @Lock(name = "lock", key = "#id1 + \"-\" + #id2", leaseTime = 5000L, waitTime = 60000L, async = false, fair = false) public String doA(@RequestParam String id1, @RequestParam String id2) { try { TimeUnit.MILLISECONDS.sleep(2000L); } catch (InterruptedException e) { e.printStackTrace(); } LOG.info("doA - lock is got"); return "A"; }
@SpringBootApplication @EnableLock @ComponentScan(basePackages = { "com.nepxion.aquarius.example.lock.service" }) public class ReadWriteLockApplication {
@SpringBootApplication @EnableLock @EnableCache @EnableLimit @EnableLocalIdGenerator @EnableRedisIdGenerator @EnableZookeeperIdGenerator public class AquariusApplication { public static void main(String[] args) { new SpringApplicationBuilder(AquariusApplication.class).run(args); } }