Study/Spring

μŠ€ν”„λ§ λΆ€νŠΈμ—μ„œ μ„œλΈ”λ¦Ώ μ‚¬μš©ν•˜κΈ° @ServletComponentScan @WebServlet(name = "helloServlet", urlPatterns = "/hello") protected void service(HttpServletRequest request, HttpServletResponse response) : HTTP μš”μ²­μ„ 톡해 λ§€ν•‘λœ URL이 호좜되면 μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆλŠ” λ‹€μŒ λ©”μ„œλ“œλ₯Ό μ‹€ν–‰ HTTP μš”μ²­ λ°μ΄ν„°λ‘œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” 방법 1. GET - 쿼리 νŒŒλΌλ―Έν„° /url?username=hello&age=20 String username = request.getParameter("username"); //단일 νŒŒλΌλ―Έν„° 쑰회 Enumeration parameterN..
빈 μŠ€μ½”ν”„ 빈이 μ‘΄μž¬ν•  수 μžˆλŠ” λ²”μœ„. @Scope("prototype")둜 지정 κ°€λŠ₯ 싱글톀 : κΈ°λ³Έ μŠ€μ½”ν”„λ‘œ μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ˜ μ‹œμž‘κ³Ό μ’…λ£ŒκΉŒμ§€ μœ μ§€ 됨 ν”„λ‘œν† νƒ€μž… : μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆλŠ” ν”„λ‘œν† νƒ€μž… 빈의 생성과 μ˜μ‘΄κ΄€κ³„ μ£Όμž…κΉŒμ§€λ§Œ κ΄€μ—¬ν•˜κ³  λ”λŠ” κ΄€λ¦¬ν•˜μ§€ μ•ŠλŠ” 맀우 짧은 λ²”μœ„μ˜ μŠ€μ½”ν”„ ν΄λΌμ΄μ–ΈνŠΈμ— λΉˆμ„ λ°˜ν™˜ν•˜κ³ , 이후 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆλŠ” μƒμ„±λœ ν”„λ‘œν† νƒ€μž… λΉˆμ„ κ΄€λ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€. ν”„λ‘œν† νƒ€μž… λΉˆμ„ 관리할 μ±…μž„μ€ ν”„λ‘œν† νƒ€μž… λΉˆμ„ 받은 ν΄λΌμ΄μ–ΈνŠΈμ— μžˆλ‹€. κ·Έλž˜μ„œ @PreDestroy 같은 μ’…λ£Œ λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠλŠ”λ‹€. μ›Ή κ΄€λ ¨ μŠ€μ½”ν”„ request: μ›Ή μš”μ²­μ΄ λ“€μ–΄μ˜€κ³  λ‚˜κ°ˆλ•Œ κΉŒμ§€ μœ μ§€λ˜λŠ” μŠ€μ½”ν”„ session: μ›Ή μ„Έμ…˜μ΄ μƒμ„±λ˜κ³  μ’…λ£Œλ  λ•Œ κΉŒμ§€ μœ μ§€λ˜λŠ” μŠ€μ½”ν”„ application: μ›Ήμ˜ μ„œλΈ”λ¦Ώ μ»¨ν…μŠ€νŠΈμ™€ κ°™..
μŠ€ν”„λ§ 빈의 라이프 사이클 μŠ€ν”„λ§ λΉˆμ€ κ°„λ‹¨ν•˜κ²Œ λ‹€μŒκ³Ό 같은 라이프사이클을 가진닀. ➑️ 객체 생성 -> μ˜μ‘΄κ΄€κ³„ μ£Όμž… μŠ€ν”„λ§ λΉˆμ€ 객체λ₯Ό μƒμ„±ν•˜κ³ , μ˜μ‘΄κ΄€κ³„ μ£Όμž…μ΄ λ‹€ λλ‚œ λ‹€μŒμ—μ•Ό ν•„μš”ν•œ 데이터λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” μ€€λΉ„κ°€ μ™„λ£Œλœλ‹€. λ”°λΌμ„œ μ΄ˆκΈ°ν™” μž‘μ—…μ€ μ˜μ‘΄κ΄€κ³„ μ£Όμž…μ΄ λͺ¨λ‘ μ™„λ£Œλ˜κ³  λ‚œ λ‹€μŒμ— ν˜ΈμΆœν•΄μ•Ό ν•œλ‹€. 그런데 κ°œλ°œμžκ°€ μ˜μ‘΄κ΄€κ³„ μ£Όμž…μ΄ λͺ¨λ‘ μ™„λ£Œλœ μ‹œμ μ„ μ–΄λ–»κ²Œ μ•Œ 수 μžˆμ„κΉŒ? μŠ€ν”„λ§μ€ μ˜μ‘΄κ΄€κ³„ μ£Όμž…μ΄ μ™„λ£Œλ˜λ©΄ μŠ€ν”„λ§ λΉˆμ—κ²Œ 콜백 λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œ μ΄ˆκΈ°ν™” μ‹œμ μ„ μ•Œλ €μ£ΌλŠ” λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. μŠ€ν”„λ§μ€ μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆκ°€ μ’…λ£Œλ˜κΈ° 직전에 μ†Œλ©Έ μ½œλ°±μ„ μ€€λ‹€. λ”°λΌμ„œ μ•ˆμ „ν•˜κ²Œ μ’…λ£Œ μž‘μ—…μ„ 진행할 수 μžˆλ‹€. μŠ€ν”„λ§ 빈의 전체 이벀트 라이프사이클 ➑️ μŠ€ν”„λ§μ»¨ν…Œμ΄λ„ˆμƒμ„± -> μŠ€ν”„λ§λΉˆμƒμ„± -> μ˜μ‘΄κ΄€κ³„μ£Όμž…..
μˆ˜λ™ 빈 등둝 (μ»΄ν¬λ„ŒνŠΈ μ• λ…Έν…Œμ΄μ…˜μ΄ 뢙은 것듀을 μ œμ™Έν•˜κ³ ) @Bean을 톡해 λ“±λ‘λ˜λŠ” 것. AppConfig와 같이 μžλ°” μ„€μ •νŒŒμΌμ„ μΆ”κ°€ν•˜μ—¬ μˆ˜λ™ 빈 λ“±λ‘ν•˜λ©΄ λœλ‹€. μˆ˜λ™ 빈 등둝은 μ–Έμ œ μ‚¬μš©ν•˜λ©΄ μ’‹μ„κΉŒ? 1. 기술 지원 빈 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 크게 업무 둜직과 기술 지원 둜직으둜 λ‚˜λˆŒ 수 μžˆλ‹€. 업무 둜직 빈: 웹을 μ§€μ›ν•˜λŠ” 컨트둀러, 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μžˆλŠ” μ„œλΉ„μŠ€, 데이터 κ³„μΈ΅μ˜ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” 리포지토리등이 λͺ¨λ‘ 업무 λ‘œμ§μ΄λ‹€. 보톡 λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬μ‚¬ν•­μ„ κ°œλ°œν•  λ•Œ μΆ”κ°€λ˜κ±°λ‚˜ λ³€κ²½λœλ‹€. 업무 λ‘œμ§μ€ μˆ«μžλ„ 맀우 많고 μœ μ‚¬ν•œ νŒ¨ν„΄μ„ 가지고 μžˆλ‹€. 보톡 λ¬Έμ œκ°€ λ°œμƒν•΄λ„ μ–΄λ–€ κ³³μ—μ„œ λ¬Έμ œκ°€ λ°œμƒν–ˆλŠ”μ§€ λͺ…ν™•ν•˜κ²Œ νŒŒμ•…ν•˜κΈ° 쉽닀. 기술 지원 빈: 기술적인 λ¬Έμ œλ‚˜ 곡톡 관심사(AOP)λ₯Ό μ²˜λ¦¬ν•  λ•Œ 주둜 μ‚¬μš©λœλ‹€...
μ˜μ‘΄κ΄€κ³„ μžλ™ μ£Όμž… μƒμ„±μž μ£Όμž… μƒμ„±μžλ₯Ό ν†΅ν•΄μ„œ μ˜μ‘΄κ΄€κ³„λ₯Ό μ£Όμž… λ°›λŠ” 방식 λΆˆλ³€, ν•„μˆ˜ μ˜μ‘΄κ΄€κ³„μ— μ‚¬μš© μƒμ„±μžκ°€ λ”± 1개만 있으면 @Autowiredλ₯Ό μƒλž΅ν•΄λ„ μžλ™ μ£Όμž…λœλ‹€. μˆ˜μ •μž μ£Όμž… 선택, λ³€κ²½ κ°€λŠ₯성이 μžˆλŠ” μ˜μ‘΄κ΄€κ³„μ— μ‚¬μš© ν•„λ“œ μ£Όμž… ν•„λ“œμ— λ°”λ‘œ μ£Όμž…ν•˜λŠ” 방법 μ½”λ“œκ°€ κ°„κ²°ν•˜μ§€λ§Œ μΆ”ν›„ 변경이 λΆˆκ°€λŠ₯ν•΄ ν…ŒμŠ€νŠΈ ν•˜κΈ° μ–΄λ ΅λ‹€λŠ” 단점이 μžˆλ‹€. λ˜λ„λ‘μ΄λ©΄ μ‚¬μš©ν•˜μ§€ 말고 ν…ŒμŠ€νŠΈ μ½”λ“œμ—μ„œλ§Œ μ‚¬μš©ν•˜λ„λ‘ ν•˜μž 일반 λ©”μ„œλ“œ μ£Όμž… 일반 λ©”μ„œλ“œλ₯Ό 톡해 μ£Όμž… 받을 수 μžˆμ§€λ§Œ 일반적으둜 잘 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€ μ˜΅μ…˜μ²˜λ¦¬ μ£Όμž…ν•  μŠ€ν”„λ§ 빈이 없어도 λ™μž‘ν•΄μ•Ό ν•  λ•Œκ°€ μžˆλ‹€. μ΄λŸ΄λ•Œ μ˜΅μ…˜κ°’μ„ μ΄μš©ν•΄ μ²˜λ¦¬ν•˜λ©΄ λœλ‹€. @Autowired(required=false) : μžλ™ μ£Όμž…ν•  λŒ€μƒμ΄ μ—†μœΌλ©΄ μˆ˜μ •μž λ©”μ„œλ“œ μžμ²΄κ°€ 호좜 μ•ˆλ¨ org...
YURIπŸ•πŸ“πŸΆ
'Study/Spring' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (3 Page)