[μ΄νŽ™ν‹°λΈŒ μžλ°”] 3. private μƒμ„±μžλ‚˜ μ—΄κ±° νƒ€μž…μœΌλ‘œ μ‹±κΈ€ν„΄μž„μ„ 보μž₯ν•˜λΌ

[μ΄νŽ™ν‹°λΈŒ μžλ°”] 3. private μƒμ„±μžλ‚˜ μ—΄κ±° νƒ€μž…μœΌλ‘œ μ‹±κΈ€ν„΄μž„μ„ 보μž₯ν•˜λΌ

μ‹±κΈ€ν„΄μ΄λž€ μΈμŠ€ν„΄μŠ€λ₯Ό ν•˜λ‚˜λ§Œ 생성할 수 μžˆλŠ” 클래슀둜, ν•¨μˆ˜μ™€ 같은 λ¬΄μƒνƒœ (stateless) κ°μ²΄λ‚˜ 섀계상 μœ μΌν•΄μ•Ό ν•˜λŠ” μ‹œμŠ€ν…œ μ»΄ν¬λ„ŒνŠΈ, ν˜Ήμ€ μ΅μˆ™ν•œ μŠ€ν”„λ§ 빈이 λŒ€ν‘œμ μΈ μ‹±κΈ€ν„΄μ˜ 예둜 λ“€ 수 μžˆλ‹€. 클래슀λ₯Ό μ‹±κΈ€ν„΄μœΌλ‘œ λ§Œλ“€ 경우, (νƒ€μž…μ„ μΈν„°νŽ˜μ΄μŠ€λ‘œ μ •μ˜ν•œ ν›„ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•΄μ„œ λ§Œλ“  싱글턴이 μ•„λ‹ˆλΌλ©΄) μ‹±κΈ€ν„΄ μΈμŠ€ν„΄μŠ€λ₯Ό Mock으둜 λŒ€μ²΄ν•  수 없기에 ν…ŒμŠ€νŠΈκ°€ μ–΄λ €μšΈ 수 μžˆλ‹€. 싱글턴을 λ§Œλ“œλŠ” 보편적인 두가지 방식이 μžˆλŠ”λ°, 두 방식 λͺ¨λ‘μƒμ„±μžλŠ” private으둜 감좰두고 μœ μΌν•œ μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” μˆ˜λ‹¨μœΌλ‘œ public static 멀버λ₯Ό ν•˜λ‚˜ λ§ˆλ ¨ν•΄ λ‘”λ‹€. ...

[μ΄νŽ™ν‹°λΈŒ μžλ°”] 2. μƒμ„±μžμ— λ§€κ°œλ³€μˆ˜κ°€ λ§Žλ‹€λ©΄ λΉŒλ”λ₯Ό κ³ λ €ν•˜λΌ

[μ΄νŽ™ν‹°λΈŒ μžλ°”] 2. μƒμ„±μžμ— λ§€κ°œλ³€μˆ˜κ°€ λ§Žλ‹€λ©΄ λΉŒλ”λ₯Ό κ³ λ €ν•˜λΌ

μ •μ νŒ©ν† λ¦¬μ™€ μƒμ„±μžμ—λŠ” λ§€κ°œλ³€μˆ˜κ°€ λ§Žμ„ 경우 λŒ€μ‘μ΄ νž˜λ“€λ‹€λŠ” λ™μΌν•œ μ œμ•½μ΄ μžˆλ‹€. 특히 λ§€κ°œλ³€μˆ˜κ°€ ꡉμž₯히 λ§Žμ€λ° λŒ€λΆ€λΆ„μ΄ 고정값인 경우 일반적인 λ°©λ²•μœΌλ‘œλŠ” κΉ”λ”ν•œ λŒ€μ‘μ΄ νž˜λ“€λ‹€. μœ μ—°ν•œ λŒ€μ‘μ„ μœ„ν•΄ 보톡 점측적 μƒμ„±μžνŒ¨ν„΄, μžλ°” 빈즈 νŒ¨ν„΄, λΉŒλ” νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λŠ”λ°, 이번 μ±•ν„°μ—μ„œλŠ” λΉŒλ” νŒ¨ν„΄μ˜ μž₯점을 κ°•μ‘°ν•˜κ³  μžˆλ‹€. 각 νŒ¨ν„΄μ˜ μž₯단점을 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ³  λΉŒλ” νŒ¨ν„΄μ˜ μž₯점을 μ•Œμ•„λ³΄μž 1. 점측적 μƒμ„±μž νŒ¨ν„΄ ν•„μˆ˜ λ§€κ°œλ³€μˆ˜λ§Œ λ°›λŠ” μƒμ„±μž ν•„μˆ˜ λ§€κ°œλ³€μˆ˜μ™€ 선택 λ§€κ°œλ³€μˆ˜ 1개λ₯Ό λ°›λŠ” μƒμ„±μž, ν•„μˆ˜ λ§€κ°œλ³€μˆ˜μ™€ 선택 λ§€κ°œλ³€μˆ˜ 2개λ₯Ό λ°›λŠ” μƒμ„±μž, ν•„μˆ˜ λ§€κ°œλ³€μˆ˜μ™€ 선택 λ§€κ°œλ³€μˆ˜ 3개λ₯Ό λ°›λŠ” μƒμ„±μž, ... ...

[μ΄νŽ™ν‹°λΈŒ μžλ°”] 1. μƒμ„±μž λŒ€μ‹  정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ

[μ΄νŽ™ν‹°λΈŒ μžλ°”] 1. μƒμ„±μž λŒ€μ‹  정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ

μƒμ„±μž λŒ€μ‹  정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ ν΄λΌμ΄μ–ΈνŠΈκ°€ 클래슀 μΈμŠ€ν„΄μŠ€λ₯Ό μ–»λŠ” λ°©λ²•μ—λŠ” 전톡적인 방법 쀑 ν•˜λ‚˜λŠ”Β public이닀. ν•˜μ§€λ§Œ 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œ(static factory method)도 κΌ­ μ•Œμ•„λ‘μ–΄μ•Όν•œλ‹€. 1. 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλž€? κ·Έλ ‡λ‹€λ©΄ 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλŠ” λ¬΄μ—‡μΌκΉŒ? κ°„λ‹¨νžˆ 말해 객체 μƒμ„±μ˜ 역할을 ν•˜λŠ” 클래슀 λ©”μ„œλ“œλ‘œ, static λ©”μ„œλ“œλ₯Ό 톡해 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 것이닀. λ‹€μŒμ€ java의 κΈ°λ³Έ Boolean 클래슀 λ‚΄ 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œμ˜ κ°„λ‹¨ν•œ μ˜ˆμ‹œμ΄λ‹€.Β μ΄νŒ©ν‹°λΈŒ μžλ°”μ—μ„œλŠ” 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  μ‹œμ˜ 5κ°€μ§€ μž₯점과 2κ°€μ§€ 단점에 λŒ€ν•΄ μ„œμˆ ν•˜κ³  μžˆμ–΄Β μžμ„Έν•œ 비ꡐλ₯Ό 톡해 ν•˜λ‚˜ν•˜λ‚˜ μ•Œμ•„λ³΄λ € ν•œλ‹€. ...

[Spring] Java 21 μ™Έμž₯ ν†°μΊ£ 버전 μ„€μ •

[Spring] Java 21 μ™Έμž₯ ν†°μΊ£ 버전 μ„€μ •

1. 문제 상황 Java21 버전 μ—… 쀑, μΈν…”λ¦¬μ œμ΄ λ‚΄μž₯ ν†°μΊ£μœΌλ‘œλŠ” μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜μ§€λ§Œ, μ»€μŠ€ν…€ μ˜΅μ…˜μ„ μ‚¬μš© 쀑인 μ™Έμž₯톰캣을 κ·ΈλŒ€λ‘œ μ‚¬μš© μ‹œ μ •μƒμ μœΌλ‘œ κ΅¬λ™λ˜μ§€ μ•ŠλŠ” ν˜„μƒμ΄ λ°œκ²¬λ˜μ—ˆλ‹€. 2. ν•΄κ²° λ¨Όμ €, λΉŒλ“œ 및 path λ“± κΈ°μ‘΄ 섀정듀은 λ¬Έμ œκ°€ μ—†λŠ” 것을 ν™•μΈν•˜μ˜€κ³ , 둜컬 ν†°μΊ£μ—μ„œ μ •μƒμ μœΌλ‘œ ꡬ동됨을 ν™•μΈν•˜μ˜€κΈ°μ— λ‹€λ₯Έ 뢀뢄을 μΆ”κ°€λ‘œ 확인해 λ³΄μ•˜λ‹€. 버전업 영ν–₯도 νŒŒμ•…κΈ°κ°„ 쀑 기쑴에 ν†°μΊ£ 8.5 버전과 ν˜Έν™˜λ˜λŠ” 것을 ν™•μΈν•˜μ˜€μœΌλ‚˜, 곡식 ν™ˆνŽ˜μ΄μ§€μ—μ„œ μž¬ν™•μΈν•΄λ³΄μ•˜λ‹€. ν†°μΊ£ 8.5 λ²„μ „μ˜ μžλ°” 지원버전을 보면 "7 and later"둜 λ˜μ–΄μžˆμ–΄ 7 이후 버전을 λ‹€ μ‚¬μš© κ°€λŠ₯ν•œ κ²ƒμœΌλ‘œ μ΄ν•΄ν–ˆμ—ˆμœΌλ‚˜, λ‹€λ₯Έ 버전을 μ‹œλ„. ...

[Spring] Spring Security6 filterchain μ‚¬μš©μ‹œ jsp λ·° λ Œλ”λ§ μ„€μ •

1. ν˜„μƒ μŠ€ν”„λ§λΆ€νŠΈ 3.*.* 버전 업을 ν•˜λ©° Spring Security6으둜 μ—…λ°μ΄νŠΈ 쀑이닀. 더 이상 μ§€μ›ν•˜μ§€ μ•ŠλŠ” WebSecurityConfigurerAdapterλ₯Ό SecurityFilterChain으둜 λ³€κ²½ μ‹œ ν¬μ›Œλ”©λ˜λŠ” jsp 파일 κ²½λ‘œκ°€ 필터에 κ±Έλ € λ…ΈμΆœλ˜μ§€ μ•ŠλŠ” ν˜„μƒμ΄ λ°œμƒν•˜μ˜€λ‹€. 1-1. κΈ°μ‘΄ μƒ˜ν”Œ μ†ŒμŠ€ @Configuration public class SecurityConfig { @Bean public SecurityFilterChain config(HttpSecurity http) throws Exception { http.authorizeHttpRequests((auth) -> auth .requestMatchers("/").permitAll() .anyRequest().authenticated() ); } κΈ°μ‘΄κ³Ό 같이 β€œ/” κ²½λ‘œμ— λŒ€ν•œ κΆŒν•œμ„ λΆ€μ—¬ν•˜μ˜€μ§€λ§Œ, jsp κ²½λ‘œμ— λŒ€ν•œ κΆŒν•œλΆ€μ‘±μœΌλ‘œ νŽ˜μ΄μ§€ 접근에 μ‹€νŒ¨ν•˜μ˜€λ‹€. 2. 원인 Spring Security 5.8 and earlier only ...