[Etc] ๐๏ธ Boilerplate์ Lombok
in SPRING
๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์ฝ๋ ํ ํ๋ฆฟ์ธ Boilerplate์ ๋ํด ์์๋ณด์.
- ๋ณด์ผ๋ฌํ๋ ์ดํธ(Boilerplate)๋?
- ๋ณด์ผ๋ฌํ๋ ์ดํธ์ ํน์ง
- ์์ ์ฝ๋
- Lombok
- ๋กฌ๋ณต์ ์ฅ์
- Spring์์์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ํด๊ฒฐ ๊ตฌ์กฐ
๋ณด์ผ๋ฌํ๋ ์ดํธ์ ๋ํด ์์๋ณด๊ณ , spring์์ ๋ณด์ผ๋ฌํ๋ ์ดํธ๋ฅผ ์ค์ฌ์ฃผ๋ ๋๊ตฌ ์ค ํ๋์ธ ๋กฌ๋ณต์ ๋ํด ์์๋ณด์.
๋ณด์ผ๋ฌํ๋ ์ดํธ(Boilerplate)๋?
- ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์ฝ๋ ํ ํ๋ฆฟ
- ๐ฅ ์ฆ, โ๋งค๋ฒ ์๋ก ์์ฑํด์ผํ๋ ๊ธฐ๋ณธ ์ฝ๋์ธํธโ๋ฅผ ๋ณด์ผ๋ฌํ๋ ์ดํธ๋ผ๊ณ ํจ
- ์๋ฏธ
- ์๋๋ ์ธ์ ์ฐ์ ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธ์ํ์ ์๋ฏธ
- ์ดํ ์ํํธ์จ์ด ๊ฐ๋ฐ์์๋ โ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํด์ผํ๋ ์ฝ๋ ๋ฉ์ด๋ฆฌโ๋ฅผ ์๋ฏธํ๊ฒ ๋์๋ค.
๋ณด์ผ๋ฌํ๋ ์ดํธ์ ํน์ง
- ๋ฐ๋ณต์ ์ธ ์ฝ๋
- ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ๋งค๋ฒ ์์ฑํด์ผํ๋ ์ฝ๋๋ค์ด ํฌํจ๋จ
- ์๋ฅผ ๋ค์ด, ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ก์ ํธ ๊ตฌ์กฐ, ์ค์ ํ์ผ, ์ธ์ฆ ๋ก์ง ๋ฑ์ด ํด๋น
๋ฐ๋ณต์ ์ด๋ ์์ข๋ค๊ณ ์ฌ๊ฒจ์ง ์ ์์ง๋ง, ์์ ํ ์์ ๋๊ฒ ๋ชฉ์ ์ด ์๋๋ผ ์ต์ํํ๊ณ ํจ์จํํ๋ ๊ฒ์ด ํต์ฌ!
- ํ ํ๋ฆฟํ
- ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ , ๊ฐ๋ฐ ์๊ฐ์ ์ค์ฌ์ค
- ์๋ฅผ ๋ค์ด, React, Express, Spring Boot๊ฐ์ ํ๋ ์์ํฌ์์๋ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๊ฐ ํฌํจ๋ ํ ํ๋ฆฟ์ด ์ ๊ณต๋จ
- ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ฃผ ์ฌ์ฉ๋จ
- React :
create-react-app
์ด ๊ธฐ๋ณธ์ ์ธ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์ค์ ์ ์๋์ผ๋ก ์์ฑ - Express :
express-generator
๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ์ ์ธ Express ํ๋ก์ ํธ ์์ฑ - Spring Boot :
Spring Initializr
๋ฅผ ์ฌ์ฉ์ฌ๋ฉด ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ด ํฌํจ๋ ํ๋ก์ ํธ ์์ฑ
์์ ์ฝ๋
- Spring Boot ๋ณด์ผ๋ฌํ๋ ์ดํธ
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Lombok
๋กฌ๋ณต(Lombok)์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์ค์ฌ์ฃผ๋ ๋๊ตฌ ์ค ํ๋
ํ์ง๋ง Spring ์ ์ฒด๊ฐ ๋ณด์ผ๋ฌํ๋ ์ดํธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ตฌ์กฐ๊ณ , ๋กฌ๋ณต์ ๊ทธ ์ค ์ผ๋ถ๋ถ
- Java์์ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํ๋ ์ฝ๋๋ค (getter, setter, constructor ๋ฑ)์ ์ด๋ ธํ ์ด์ ์ผ๋ก ์๋ ์์ฑํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฃผ์ ์ด๋ ธํ ์ด์ ์ ๋ฆฌ
์ด๋ ธํ ์ด์ | ์ค๋ช |
---|---|
@Getter | ๋ชจ๋ ํ๋์ getter ์์ฑ |
@Setter | ๋ชจ๋ ํ๋์ setter ์์ฑ |
@ToString | toString() ์๋ ์์ฑ |
@EqualsAndHashCode | equals() ์ hashCode() ์๋ ์์ฑ |
@NoArgsConstructor | ๊ธฐ๋ณธ ์์ฑ์ ์์ฑ |
@AllArgsConstructor | ๋ชจ๋ ํ๋๋ฅผ ๋ฐ๋ ์์ฑ์ ์์ฑ |
@RequiredArgsConstructor | final ํ๋๋ง ๋ฐ๋ ์์ฑ์ ์์ฑ |
@Data | Getter + Setter + ToString + EqualsAndHashCode + @RequiredArgsConstructor ํฌํจ๋ ์ข
ํฉ ํจํค์ง |
@Builder | ๋น๋ ํจํด ์๋ ์์ฑ (.builder() ๋ก ๊ฐ์ฒด ์์ฑ ๊ฐ๋ฅ) |
์์:
โ ์ผ๋ฐ์ ์ธ Java ์ฝ๋ (๋ณด์ผ๋ฌํ๋ ์ดํธ ๋ง์)
public class User {
private String name;
private int age;
public User() {}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
// ... ๋ฐ๋ณต
}
โ ๋กฌ๋ณต ์ฌ์ฉ
import lombok.Data;
@Data
public class User {
private String name;
private int age;
}
@Data
ํ๋๋กgetter/setter/toString/equals/hashCode/constructor
์ ๋ถ ์์ฑ๋จ ๐
๐ก ๋กฌ๋ณต์ ์ฅ์
- โ๏ธ ์ฝ๋๊ฐ ์งง์์ ธ์ ๊ฐ๋ ์ฑ์ด ์ข์์ง
- ๐ซ getter/setter ์์ฑ ์ค์ ๋ฐฉ์ง
- ๐งช ํ ์คํธ ์ฝ๋๋ ๊ฐํธํด์ง
- โฑ ์ฝ๋ ์์ฑ ์๋ ๊ธ์์น
- ๐ ๋ฆฌํฉํ ๋งํ ๋ ์์ ํ ์ฝ๋ ์ค์ด๋ฆ
Spring์์์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ํด๊ฒฐ ๊ตฌ์กฐ
๋๊ตฌ / ๊ฐ๋ | ์ญํ |
---|---|
Spring Boot | ์ค์ ํ์ผ, ์๋ฒ ์คํ ๋ฑ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์๋ํ |
Spring MVC ๊ตฌ์กฐ | ์ปจํธ๋กค๋ฌ/์๋น์ค/๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌ์กฐ ์ ํํํด์ ๋ฐ๋ณต ํจํด ํต์ผ |
Spring Initializr | ํ๋ก์ ํธ ๊ธฐ๋ณธ ๋ผ๋ ์๋ ์์ฑ |
๋กฌ๋ณต(Lombok) | DTO๋ ์ํฐํฐ์์ ๋ฐ๋ณต๋๋ getter/setter ๋ฑ ์ ๊ฑฐ |
์์กด์ฑ ์ฃผ์ (DI) | ๊ฐ์ฒด ์์ฑ๊ณผ ์์กด์ฑ ์ฐ๊ฒฐ์ Spring์ด ๋์ ์ฒ๋ฆฌ |