์ปดํ์ผ๊ณผ์ ์์ ์์ฑํด ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ java๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
@Value
๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ค๋ค.
class์ ์ ์ธํ๋ฉด ์๋์ ์ด๋ ธํ ์ด์ ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋๋ค.
@Getter @AllArgsConstructor
@ToString @EqualsAndHashCode
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
ํ์ง๋ง
@Setter ๋ ํฌํจ๋์ง ์๋๋ค.
์๋ํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ setter๋ฅผ ์๋ตํ๋ ๊ฒ์ ๋น์ฐํ๋ค
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) ๋ private์ด๋ final ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
์ต์ข ์ ์ผ๋ก @Value ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋์ ๊ฐ๋ค.
import lombok.Getter;
import lombok.ToString;
import lombok.EqualsAndHashCode;
import lombok.experimental.FieldDefaults;;
import lombok.AllArgsConstructor;
@Getter
@ToString
@EqualsAndHashCode
@FieldDefaults(makeFinal = true)
@AllArgsConstructor
public class Student {
private String name;
private int section;
}
@Data
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
public class Person {
private Long id;
private String firstName;
private String lastName;
private String email;
private int age;
}
+ @Data With @Builder
@Data ๋ ํ์ ์์ฑ์๋ฅผ ์์ฑํ๋ค.
ํ์ง๋ง @Builder๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๊ฐ์๊ธฐ @Data ๊ฐ ๋ชจ๋ ํ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์์ฑํ๋ค.
Spring DI ๋ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํด ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์์ ์์กดํ๊ธฐ ๋๋ฌธ์
@NoArgsConstructor๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ์์ฑ์๋ฅผ ์ฌ์ฉํด์ค์ผ ํ๋ค.
์๊ทธ๋ฌ๋ฉด ์๋ฌ๋จ
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class Person {
...
}
@NoArgsConstructor ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์ ์์ฑ
@AllArgsConstructor ๋ชจ๋ ํ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์ ์์ฑ
@RequiredArgsConstructor final , @NonNull์ธ ํ๋ ๊ฐ๋ง ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์ ์์ฑ
์ฐธ๊ณ ์ฌ์ดํธ