赞
踩
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
@Data最常用的注解之一。注解在类上,提供该类所有属性的getter/setter方法,还提供了equals、canEqual、hashCode、toString方法。
更方便的是,当新增属性或减少属性时,直接删除属性定义即可,效率是否提升了很多?
作用于属性上,提供关于此参数的非空检查(该注解修饰的属性不能为 null),如果参数为空,则抛出空指针异常。
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@RestController
@RequestMapping("/omponent")
public class ComponentController {
private final ComponentService ComponentService;
}
ps:写在类上可以代替@AutoWired注解,需要注意的是在注入时需要用final定义,或者使用@Notnull注解
作用于变量,保证该变量代表的资源会被自动关闭,默认调用资源的close()方法,如果该资源有其它关闭方法,可使用@Cleanup(“methodName”)来指定。
public void jedisExample(String[] args) {
try {
@Cleanup Jedis jedis = redisService.getJedis();
} catch (Exception ex) {
logger.error(“Jedis异常:”,ex)
}
}
效果相当于:
public void jedisExample(String[] args) { Jedis jedis= null; try { jedis = redisService.getJedis(); } catch (Exception e) { logger.error(“Jedis异常:”,ex) } finally { if (jedis != null) { try { jedis.close(); } catch (Exception e) { e.printStackTrace(); } } } }
作用于类方法或实例方法上,效果与synchronized相同。区别在于锁对象不同,对于类方法和实例方法,synchronized关键字的锁对象分别是类的class对象和this对象,而@Synchronized的锁对象分别是私有静态final对象lock和私有final对象lock。也可以指定锁对象。
public class FooExample {
private final Object readLock = new Object();
@Synchronized
public static void hello() {
System.out.println("world");
}
@Synchronized("readLock")
public void foo() {
System.out.println("bar");
}
}
效果相当于:
public class FooExample { private static final Object $LOCK = new Object[0]; private final Object readLock = new Object(); public static void hello() { synchronized ($LOCK) { System.out.println("world"); } } public void foo() { synchronized (readLock) { System.out.println("bar"); } } }
使用val作为局部变量声明的类型,而不是实际写入类型。执行此操作时,将从初始化表达式推断出类型。
public Map<String, String> getMap() {
val map = new HashMap<String, String>();
map.put("1", "a");
return map;
}
效果相当于:
public Map<String, String> getMap() {
HashMap<String, String> map = new HashMap<String, String>();
map.put("1", "a");
return map;
}
也就是说在局部变量中,Lombok帮你推断出具体的类型,但只能用于局部变量中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。