์๋ก
@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor ์ ๋ค Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ์ด๋ ธํ ์ด์ ์ ๋๋ค. ๊ฐ๊ฐ์ ์๋ฏธ์ ์ธ์ ์ฌ์ฉํ๋์ง์ ๋ํด ํ๋ฒ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
์ด๋ ธํ ์ด์ | ์๋ฏธ |
@NoArgsConstructor | ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค. |
@AllArgsConstructor | ๋ชจ๋ ํ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค. |
@RequiredArgsConstructor | final์ด๋ @NonNull์ธ ํ๋ ๊ฐ๋ง ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค. |
1. @NoArgsConstructor
@NoArgsConstructor์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค. ์๋ ์ฝ๋๋ก ํ๋ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class TestConstructor {
private String name;
private int age;
public TestConstructor(String name, int age) {
this.name = name;
this.age = age;
}
void out() {
System.out.println("์ด๋ฆ: " + name + " ๋์ด: " + age);
}
}
class TestMain {
public static void main(String[] args) {
TestConstructor testConstructor = new TestConstructor();
testConstructor.out();
}
}
ํ์ฌ TestConstructor์๋ name๊ณผ age๋ฅผ ์ด๊ธฐํํ๋ ์์ฑ์ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ๋๋ฌธ์ ์๋๋๋ก๋ฉด ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ name๊ณผ age ํ๋ผ๋ฏธํฐ๋ฅผ ๋๊ฒจ์ฃผ์ด์ผ ํ๋๋ฐ ์ ์ฝ๋๋ ๋ฃ์ด์ฃผ์ง ์์์ผ๋ ์ปดํ์ผ ์๋ฌ๋ฅผ ๋ฑ์ด๋ ๋๋ค.
ํ์ง๋ง @NoArgsConstructor ์ ๋ ธํ ์ด์ ๋๋ถ์ ์ปดํ์ผ ์๋ฌ ์์ด ํ๋ผ๋ฏธํฐ๋ฅผ ๋๊ฒจ์ฃผ์ง ์๋๋ผ๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
2. @RequiredArgsConstructor
@RequiredArgsConstructor์ final์ด๋ @NonNull์ธ ํ๋ ๊ฐ๋ง ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค.
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class TestConstructor {
private String name;
private int age;
private String sex;
void out() {
System.out.println("์ด๋ฆ: " + name + " ๋์ด: " + age);
}
}
class TestMain {
public static void main(String[] args) {
TestConstructor testConstructor = new TestConstructor("์์ฃผํ", 25, "๋จ"); // ์ปดํ์ผ ์๋ฌ
testConstructor.out();
}
}
์ ์ฝ๋๋ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ฝ๋์ ๋๋ค. ์ด๋๊ฐ ์๋ชป๋์์๊น์?
@RequiredArgsConstructor์ final์ด๋ @NonNull์ธ ํ๋ ๊ฐ๋ง ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์์ฑํ๋ค๊ณ ํ์ต๋๋ค. ํ์ง๋ง ํ์ฌ name, age, sex ๋ณ์๋ค์ ์ ๋ถ final๋, @NonNull๋ ์๋ ์ผ๋ฐ ์ธ์คํด์ค ๋ณ์ ๊ทธ ์์ฒด์ ๋๋ค. ๋ฐ๋ผ์ ์์ฑํ ์ ์๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์๋ ์ฝ๋์ ๊ฐ์ด ์ธ์คํด์ค ๋ณ์๋ฅผ @NonNull ํน์ final๋ก ์ง์ ํด์ฃผ์ด์ผ ์ฌ๋ฐ๋ฅด๊ฒ ์ปดํ์ผ๋ฉ๋๋ค.
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class TestConstructor {
@NonNull
private String name;
private final int age;
private final String sex;
void out() {
System.out.println("์ด๋ฆ: " + name + " ๋์ด: " + age);
}
}
class TestMain {
public static void main(String[] args) {
TestConstructor testConstructor = new TestConstructor("์์ฃผํ", 25, "๋จ");
testConstructor.out();
}
}
3. @AllArgsConstructor
@AllArgsConstructor์ ๋ชจ๋ ํ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค.
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class TestConstructor {
private String name;
private int age;
private String sex;
void out() {
System.out.println("์ด๋ฆ: " + name + " ๋์ด: " + age);
}
}
class TestMain {
public static void main(String[] args) {
TestConstructor testConstructor = new TestConstructor("์์ฃผํ", 25, "๋จ");
testConstructor.out();
}
}
๋ฐ๋ก ์์ฑ์ ๋ฉ์๋๋ฅผ ์์ฑํด ์ฃผ์ง ์์๋ @AllArgsConstructor ์ด๋ ธํ ์ด์ ๋ง ์ ์ฉํ๋ฉด ์์ฑ์ ๋ฉ์๋๊ฐ ์์ฑ๋์ด ์๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฒ๊ฑฐ๋ก์ด ์์ฑ์ ๋ฉ์๋ ์์ฑ ์์ ์ ์ค์ผ ์ ์์ต๋๋ค.
์ฐธ๊ณ
'BackEnd๐ฑ > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ๊ฐ์ฒด๋ณต์ฌ BeanUtils.copyProperties (0) | 2022.05.15 |
---|---|
[Spring] properties encoding ํ๊ธฐ(๊ตญ์ ํ ํ๊ธ๊นจ์ง) (0) | 2022.04.27 |
[Spring] DAO์ DTO์ ์ฐจ์ด ๊ทธ๋ฆฌ๊ณ VO (0) | 2022.04.14 |
[Spring] @RequestParam, @RequestBody, @ModelAttribute์ ์ฐจ์ด (1) | 2022.03.28 |
[Spring] logging ์ ๋ํด ์์๋ณด์ (1) | 2022.03.21 |
[Spring] JUnit5์์์ Exception ์ฒ๋ฆฌ (0) | 2022.03.19 |
๋๊ธ