2022. 8. 10. 16:33ㆍWeb/JAVA
1. @Getter / @Setter
- 각각의 필드 또는 클래스에 선언해 줄 경우 Private 변수에 접근자를 생성해줍니다.
- 일일이 get/set을 통한 접근말고 어노테이션 하나만 으로 간단하게 접근자를 쓸수있게 됩니다.
@Getter @Setter
Public class User {
private String name;
}
User user = new User();
user.setName("홍길동");
String userName = user.getName();
2. @AllArgsConstructor / @NoArgsConstructor / @RequiredArgsConstructor
- @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 만들어줍니다.
- @NoArgsConstructor : 파라미터가 없는 기본 생성자를 만들어줍니다.
- @RequiredArgsConstructor : final 이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어줍니다.
@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor
public class User {
private Long id;
@NonNull
private String username;
@NonNull
private String password;
private int[] scores;
}
User user1 = new User();
User user2 = new User("dale", "1234");
User user3 = new User(1L, "dale", "1234", null);
3. @ToString
- 객체를 출력할 때 String형태로 출력이 가능한 상태로 만들어줍니다.
- 해당 어노테이션을 선언하지 않았을 경우 객체를 출력할 때마다 .toString 을 붙여줘야하는 번거로움이 있습니다.
@ToString(exclude = "password")
public class User {
private Long id;
private String username;
private String password;
private int[] scores;
}
User user = new User();
user.setId(1L);
user.setUsername("dale");
user.setUsername("1234");
user.setScores(new int[]{80, 70, 100});
System.out.println(user);
User(id=1, username=1234, scores=[80, 70, 100])
4. @EqualsAndHashCode
- 자바 빈을 만들 때 equals와 hashCode 메소드를 오버라이딩 하는 어노테이션
- callSuper를 통해 메소드 자동 생성 시 부모 클래스의 필드까지 참조할지 안할지에 대해서 정할 수가 있다.
@EqualsAndHashCode(callSuper = true)
public class User extends Domain {
private String username;
private String password;
}
User user1 = new User();
user1.setId(1L);
user1.setUsername("user");
user1.setPassword("pass");
User user2 = new User();
user1.setId(2L); // 부모 클래스의 필드가 다름
user2.setUsername("user");
user2.setPassword("pass");
user1.equals(user2);
// callSuper = true 이면 false, callSuper = false 이면 true
5. @Data
- @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 를 한꺼번에 설정해주는
유용한 어노테이션이다.
@Data
public class User {
// ...
}
6. @Builder
- 다수의 필드를 갖는 복잡한 클래스의 경우 생성자 대신 빌더를 사용하게 됩니다.
- @Builder 어노테이션을 사용하게 되면, 자동으로 해당 클래스에 빌더를 추가할 수 있습니다.
@Builder
public class User {
private Long id;
private String username;
private String password;
@Singular
private List<Integer> scores;
}
- 컬렉션(List)로 된 필드에는 @Singular 어노테이션을 선언해주면,
모든 원소를 한번에 넘기지 않고 원소를 하나씩 추가할 수 있습니다.
User user = User.builder()
.id(1L)
.username("dale")
.password("1234")
.score(70)
.score(80)
.build();
// User(id=1, username=dale, password=1234, scores=[70, 80])
7. @Value
- 한번 생성하면 변경할 수 없는 불변 객체를 만들기 위한 클래스를 선언할 때는 @Value 어노테이션을 선언합니다.
- 보통 VO를 생성할 경우 적용 됩니다.
8. @Synchronized
- 자바의 synchronized 키워드를 메소드에 선언하면 객체 레벨에서 락이 걸려서 여러가지 동기화 관련
문제들이 발생할 수 있습니다.
- 대신에 @Synchronized 어노테이션을 사용하면 가상의 필드 레벨에서 좀 더 안전하게 락을 걸어줍니다.
9. @CleanUp
- IO 처리나 JDBC 코딩을 할 때, try-catch-finally 문의 finally 절을 통해서 close() 메소드를 호출합니다.
- @Cleanup 어노테션을 사용하면 해당 자원이 자동으로 닫히는 것이 보장됩니다.
'Web > JAVA' 카테고리의 다른 글
[JAVA] Enum 사용하여 DB에 값 저장하고 조회하기 (0) | 2022.11.18 |
---|---|
[Java] Jackson을 활용한 데이터 변환(Json to Java Object) (0) | 2022.08.31 |
[JAVA] DTO, VO 그리고 Entity의 차이 (0) | 2022.08.10 |
[JAVA] JAVA 8 함수형 인터페이스 (0) | 2022.07.31 |
[JAVA] JVM 란? (0) | 2022.07.14 |