Spring Annotation

μœ κ΄‘μ§„Β·2023λ…„ 9μ›” 5일
0

πŸ“Œ 1. Annotation

μ‚¬μ „μ μœΌλ‘œλŠ” "주석"μ΄λΌλŠ” 의미λ₯Ό 가지고 있으며, μžλ°” μ½”λ“œμ— @λ₯Ό μ΄μš©ν•΄ μ£Όμ„μ²˜λŸΌ 달아 νŠΉμˆ˜ν•œ 의미λ₯Ό λΆ€μ—¬ν•΄μ€€λ‹€.

ν”„λ‘œκ·Έλž¨ μ½”λ“œμ˜ 일뢀가 μ•„λ‹Œ ν”„λ‘œκ·Έλž¨μ— κ΄€ν•œ 데이터λ₯Ό μ œκ³΅ν•˜κ³ , μ½”λ“œμ— 정보λ₯Ό μΆ”κ°€ν•˜λŠ” μ •ν˜•ν™”λœ 방법이닀.

μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜λ©΄ μ½”λ“œκ°€ 깔끔해지고 μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. λ˜ν•œ bean(객체)을 등둝할 λ•Œ XMLνŒŒμΌμ— λ”°λ‘œ λ“±λ‘ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

πŸ“Œ 2. Springμ—μ„œ μ‚¬μš©λ˜λŠ” Annotation μ’…λ₯˜

πŸ“– @Component

κ°œλ°œμžκ°€ 직접 μž‘μ„±ν•œ Classλ₯Ό Bean으둜 λ“±λ‘ν•˜κΈ° μœ„ν•œ μ–΄λ…Έν…Œμ΄μ…˜μ΄λ‹€.

@Component("sender") 
// Sender sender = new Sender();
public class Sender implements SenderInter{
	public void show() {
		System.out.println("show method μˆ˜ν–‰");
	}
}

μ—¬κΈ°μ„œ μ°Έμ‘°λ³€μˆ˜λŠ” sender둜 μ§€μ •ν•΄μ£ΌλŠ” λͺ¨μŠ΅μ΄λ‹€. λ”°λ‘œ 적어주지 μ•Šμ•„λ„ λœλ‹€!

μžλ™μœΌλ‘œ λ“±λ‘λ˜λŠ” 빈의 λ„€μž„μ€ 클래슀의 μ²«λ¬Έμžκ°€ μ†Œλ¬Έμžλ‘œ λ°”λ€Œμ–΄ μžλ™ μ μš©λœλ‹€.

μ—¬κΈ°μ„œ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ„ μ–Έν–ˆλ‹€κ³  끝이 μ•„λ‹ˆλ‹€.

XMLνŒŒμΌμ— κ°€μ„œ μ»΄ν¬λ„ŒνŠΈ μŠ€μΊ”μ„ 톡해 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ—κ²Œ μ–΄λ–€ ν΄λž˜μŠ€κ°€ 빈으둜 λ“±λ‘λ˜μ–΄μ•Ό ν•˜λŠ”μ§€λ₯Ό μ•Œλ €μ£ΌκΈ° μœ„ν•΄ 등둝을 ν•΄μ•Όλœλ‹€.

<context:component-scan base-package="anno1_auto" />

πŸ“– @Service

λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 λ“€μ–΄κ°€λŠ” Service둜 μ‚¬μš©λ˜λŠ” ν΄λž˜μŠ€μž„μ„ λͺ…μ‹œν•˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜μ΄λ‹€.

λ‚΄λΆ€μ μœΌλ‘œ @Component λ²Œμ–΄μ§€κΈ° λ•Œλ¬Έμ— bean도 생성이 λœλ‹€.

@Service("ap") // AbcProcess ap = new AbcProcess();
public class AbcProcess {
// ... code
}

πŸ“– @Autowired

μ˜μ‘΄μ„± μ£Όμž…μ„ ν•  λ•Œ μ‚¬μš©ν•˜λŠ” Annotation으둜 의쑴 객체의 νƒ€μž…μ— ν•΄λ‹Ήν•˜λŠ” bean을 μ°Ύμ•„ μ£Όμž…ν•˜λŠ” 역할을 ν•œλ‹€.

@AutowiredλŠ” 기본적으둜 μƒμ„±μž, Setter, ν•„λ“œ μœ„μΉ˜μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

@AutowiredλŠ” 의쑴 객체의 νƒ€μž…μ— ν•΄λ‹Ήν•˜λŠ” bean을 μ°Ύμ•„ μ£Όμž…ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή νƒ€μž…μ˜ bean을 μ„€μ •ν•΄μ£ΌλŠ” μ–΄λ…Έν…Œμ΄μ…˜μ΄ λ°˜λ“œμ‹œ ν•„μš”ν•˜λ‹€.

🚩 ν•„λ“œμ— @Autowired λͺ…μ‹œ

@Service
public class SenderProcess {
//  type(Sender)에 μ˜ν•œ 맀핑 (ν”„λ‘œμ νŠΈμ—μ„œ μ°Ύκ³  맀핑해쀀닀.) 클래슀의 포함관계 (상속 x)
	@Autowired
    private Sender sender;
    
    
}

🚩 μƒμ„±μžμ— @Autowired λͺ…μ‹œ

@Service
public class SenderProcess {

    public Sender sender;
    
    @Autowired
    public TestService(Sender sender) {
        this.sender = sender;
    }
}

🚩 Setter에 @Autowired λͺ…μ‹œ

	@Autowired // λ©”μ„œλ“œμ— μžλ™μœΌλ‘œ Sender νƒ€μž… 객체λ₯Ό 맀핑해쀀닀 sender νƒ€μž… 객체λ₯Ό μ°ΎλŠ”λ‹€.
	public void setSender(Sender sender) {
		this.sender = sender;
	}
profile
λ°±μ—”λ“œ 개발자 μœ κ΄‘μ§„ μž…λ‹ˆλ‹€.

0개의 λŒ“κΈ€