(1) Annotation(์ ๋ ธํ ์ด์ ) ์ด๋?
1. Annotation ์ด๋?
- ๋ฒ์ญ๊ธฐ๋ฅผ ํตํด ๋ณ์ญ์ ํด๋ณด๋ฉด Annotation์ "์ฃผ์"์ด๋ผ๋ ์๋ฏธ๋ฅผ ๋ปํ๋ค.
2. Java ์์ Annotation์ด๋?
- Java์์ Annotation์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฝ๋์ ์ถ๊ฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ์ธ๋ค.
- ์ ๋ํ ์ด์ ์ ํด๋์ค, ๋ฉ์๋, ๋ณ์, ๋งค๊ฐ๋ณ์ ๋ฑ ๋ค์ํ ์์์ ๋ํ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ฌํ ์ ๋ณด๋ฅผ ์ปดํ์ผ๋ฌ๋ ๋ฐํ์ ํ๊ฒฝ์์ ํ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํด ์ฌ์ฉ์ด ๋๋ค.
3. ๋ฉํ๋ฐ์ดํฐ๋?
- ์ฝ๋์ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉํ๋ฐ์ดํฐ ๋ผ๊ณ ํ๋ค.
- ์ฝ๋์ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์ ์ ๋ํ ์ด์ ์ ๋ถํ๊ฒ ๋๋๋ฐ ์ ๋ํ ์ด์ ์ด ์ฆ, ๋ฉํ๋ฐ์ดํฐ์ด๋ค.
์์๋ฅผ ๋ค๋ฉด, ๋์๊ด์ ์ฑ ์ด ์๊ณ , ํด๋น ์ฑ ์ ๋ฐ์ดํฐ๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ, ์ฑ ์ ์ฐพ๊ฑฐ๋ ๋ถ๋ฅํ๊ธฐ ์ํ ์ฑ ์ ๋ชฉ, ์ ์, ์ถํ๋ ๋ ๊ฐ์ ์ ๋ณด๋ค์ ์ฑ ์ ๋ฉํ๋ฐ์ดํฐ ๋ผ๊ณ ํ ์ ์๋ค.
(2) Java Annotation ์ฅ์
1. ์ฝ๋ ๊ฐ๋ ์ฑ ํฅ์
- ์ ๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๋ชฉ์ ๊ณผ ์ฌ์ฉ๋ฒ์ ๋ช ํํ๊ฒ ํํ ํ ์ ์๊ฒ ๋๋ค.
- ์ ๋ ธํ ์ด์ ์ ์ฝ๋์ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ํด๋น ์ฝ๋๊ฐ ํ๋ ์ญํ ์ด๋ ์๋ฏธ๋ฅผ ๋ช ํํ๊ฒ ์ ์ ์๋ค.
- ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ํฅ์๋๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ค.
@RestController // ์ปจํธ๋กค๋ฌ ์ปดํฌ๋ํธ์์ ๋ํ๋ธ๋ค.
public class UserController {
private final UserService userService;
@Autowired // Autowired ๋ป์ -> ์๋ ์ฐ๊ฒฐ = ์์กด์ฑ ์ฃผ์
์ ๋ํ๋ธ๋ค.
public UserController(UserService userService) {
this.userService = userService;
}
}
2. ๋ฉํ๋ฐ์ดํฐ ํ์ฉ
- ์ ๋ ธํ ์ด์ ์ ํตํด ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฒ ๋๋ฉด, ์ด๋ฅผ ๋ฐํ์ ๋๋ ์ปดํ์ผ ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ฆ, ๋ฉํ๋ฐ์ดํฐ์ธ ์ ๋ํ ์ด์ ์ ํ์ฉํด ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ ์ ๋ํ ์ด์ ์ผ๋ก ์ด์ฉํ ์ ์๋ค.
public class Service {
@Deprecated // ์ด ๋ฉ์๋๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์์ ๋ํ๋ด๋ ์ ๋ํ
์ด์
public void oldMethod() {
System.out.println("๋ ์ด์ ์ง์ ์ํ๋ ๋ฉ์๋");
}
public void newMethod() {
System.out.println("์๋ก ๋ง๋ค์์ผ๋ ์ด ๋ฉ์๋ ์ด์ฉํด์ฃผ์ธ์.");
}
}
public class Main {
public static void main(String[] args) {
Service service = new Service();
service.oldMethod(); // ์ปดํ์ผ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋จ
service.newMethod(); // ์ ์ ๋์
}
}
์ฝ๋ ์์ ์ฒ๋ผ ๋ฉํ๋ฐ์ดํฐ์ธ ์ ๋ํ ์ด์ ์ ๋ถํ์ผ๋ก์จ, IDE์ ๊ฒฝ๊ณ ๊ฐ ํ์๊ฐ ๋๋ค. ์ด ์ฒ๋ผ ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ ์ ๋ํ ์ด์ ์ผ๋ก ์ด์ฉ์ ํ ์ ์๊ฒ ๋๋ค.
3. ํ๋ ์์ํฌ์์ ํตํฉ
Spring Framework ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง SpringBoot๋ XML ์ค์ ์ ์ฌ์ฉํ์ง ์๊ณ , ์ ๋ํ ์ด์ ์ ํตํด ๋๋ถ๋ถ์ ์ค์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์๋ค. ( ๊ธฐ์กด์๋ XML ํ์ผ์ I/O๋ก ์ฝ์ด๋ค์ฌ ๋น์ ๊ตฌ์ฑ์ ํ์ด์ผ ํ๋ค. )
- XML ํ์ผ์ ์์ฑํ์ง ์์๋ ๋๋ฏ๋ก ์ค์ ์ด ํจ์ฌ ๊ฐํธํด ์ก๋ค.
- ํด๋์ค์ ์์กด์ฑ ์ฃผ์ ์ ํ๋์ ํ์ ์ ํ ์ ์์ด, ์ ์ง๋ณด์์ ์์ ์์ ์ด ์ฉ์ดํด์ก๋ค.
- XML ํ์ผ I/O๋ก ์ฝ๋ ๊ณผ์ ์ ์๋ต์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์๋ ๊ฐ์
4. ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ
- ์ ๋ ธํ ์ด์ ์ ํตํด ์ฌ๋ฌ ๋ฉ์๋๋ ํด๋์ค์ ๊ณตํต๋ ๋์์ ๋ถ์ฌํ ์ ์์ด ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
ex) AOP , @Transactional
- Deprecated ์ ๋ํ ์ด์ ์ ์์๋ก ๋ค๋ฉด, ํ๋์ Deprecated ์ ๋ํ ์ด์ ์ ํตํด ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ์ฌ๋ฌ ๋ฉ์๋์ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ๋ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ์ฆ๊ฐํ๋ค.
- ํธ๋์ญ์ ์ ์ฒ๋ฆฌํด์ฃผ๋ ์ ๋ํ ์ด์ ๋ํ, ํ๋์ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๋ฉ์๋์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ํ ์ ์๋ค.
5. ์ ์ง๋ณด์ ์ฉ์ด
- ์ ๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ์๋๋ฅผ ๋ช ํํ ํํํ ์ ์์ด, ์ดํ ์ฝ๋ ์์ ๋ฐ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
- ํน์ ๊ธฐ๋ฅ์ด๋ ๊ท์น์ ์ ๋ ธํ ์ด์ ์ผ๋ก ์ ์ํ๋ฉด, ์ด๋ฅผ ๋ฐ๋ฅด๋ ๋ชจ๋ ๋ฉ์๋๋ ํ๋๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์์ ํ ์ ์๋ค.
- JUnit์์ @Test ์ ๋ํ ์ด์ ์ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ฉ์๋๋ฅผ ํ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ์คํํ ์ ์๊ฒ๋๋ค. ์ด๋ฅผ ํตํด ์ ์ง๋ณด์๊ฐ ์ข์์ง๋ค.
'โJava > ๐Java Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Java์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋? (0) | 2025.03.06 |
---|---|
[Java] ๋ณ์ ์ด๊ธฐํ์ ๋ํ ์ดํด (0) | 2024.11.05 |
[Java] JVM ๋์ ์๋ฆฌ (1) | 2024.10.23 |
[Java] ํด๋์ค์ ๊ฐ์ฒด์ ์ ์ (9) | 2024.10.05 |
[Java] ์์ ( Extends ) (2) | 2024.05.01 |