[Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )

2024. 11. 5. 01:00ยทโ˜•Java/๐Ÿ“Java Programming

(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
'โ˜•Java/๐Ÿ“Java Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] Java์™€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?
  • [Java] ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด
  • [Java] JVM ๋™์ž‘ ์›๋ฆฌ
  • [Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (140) N
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (25) N
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (10) N
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ“šComputer Science (0)
      • ๐Ÿ› ๏ธBackend (2)
      • โ˜•Java (0)
        • ๐Ÿ“Java Programming (9)
        • ๐ŸงฉJava Design Pattern (1)
      • ๐ŸŒณSpring (9)
        • ๐ŸŒฑSpring Framework (6)
        • ๐ŸŒฑSpring Security (1)
      • โšกPython (13)
      • ๐Ÿ›ข๏ธDatabase (0)
      • ๐ŸŒฟGitHub (1)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์žก๋‹ด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํŒŒ์ด์ฌ
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ํด๋ž˜์Šค
    Java
    ํด๋ผ์šฐ๋“œ
    ํ•จ์ˆ˜
    Spring Framework
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    ์Šคํ”„๋ง
    Python
    ์ปดํŒŒ์ผ๋Ÿฌ
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ๋ฐฉํ†ต๋Œ€
    spring
    ์„ธ๊ณ„ํ™”
    ๋ฐฉ์†ก๋Œ€
    ์ž๋ฐ”
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ๋ฉ”๋ชจ๋ฆฌ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”