[Spring] ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor) ์ฐจ์ด

2025. 9. 11. 00:35ยท๐ŸŒฟSpring

Spring์€ ๊ณตํ†ต๋œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ๊ทธ ์ค‘ ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๋น„๊ตํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

 

ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š” :)


HTTP ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋Š” ํ๋ฆ„ - ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์„ ์ค‘์‹ฌ์œผ๋กœ

๋ณธ๊ฒฉ์ ์œผ๋กœ ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ์˜ ๊ฐœ๋…์„ ์•Œ๊ธฐ ์ „์—

ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ์–ด๋–ป๊ฒŒ ์ปจํŠธ๋กค๋Ÿฌ๊นŒ์ง€ ๋‹ฟ๋Š”์ง€ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ(Dispatcher Servlet)์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋งŽ์ด ์–ธ๊ธ‰๋˜๊ฑฐ๋“ ์š”.

 

์ด ๊ธ€์—์„œ๋Š” ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ๋งŒ ๊ฐ„๋žตํžˆ ๋Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ด๋Š” ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์„œ๋ฒ„๊ฐ€ ํ†ฐ์บฃ(Tomcat)์ด๋ผ๊ณ  ํ•˜๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค.

 

  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ž€(Servlet Container)?
    • HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์›น ์„œ๋ฒ„
  • ์„œ๋ธ”๋ฆฟ์ด๋ž€(Servlet)?
    • HTTP ์š”์ฒญ/์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…์ŠคํŠธ(Servlet Context)๋ฅผ ์ƒ์„ฑํ•˜๊ณ ,

๊ทธ ์•ˆ์— ์—ฌ๋Ÿฌ ์„œ๋ธ”๋ฆฟ์„ ๋“ฑ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํฌํ•จํ•˜๋Š” MVC ํŒจํ„ด์—์„œ๋Š” ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ(Dispatcher Servlet)์ด

๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์€ ์š”์ฒญ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ ,

์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•˜๋Š” ๋นˆ์ด ๋“ฑ๋ก๋œ ์ปจํ…Œ์ด๋„ˆ(=์Šคํ”„๋ง ์ปจํ…์ŠคํŠธ)์—์„œ

๋“ค์–ด์˜จ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ์ปจํŠธ๋กค๋Ÿฌ ๋นˆ์„ ์ฐพ์•„ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.

 

์ด ์š”์ฒญ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šคํ”„๋ง ์ปจํ…์ŠคํŠธ ์•ˆ์—๋Š” ์ปจํŠธ๋กค๋Ÿฌ์™€ ์„œ๋น„์Šค, ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋นˆ ๋“ฑ์ด ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.


ํ•„ํ„ฐ(Filter)

ํ•„ํ„ฐ๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„ ์ „์ฒ˜๋ฆฌ/ํ›„์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ๋ถ€๊ฐ€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ฃ .

 

ํ•„ํ„ฐ๋Š” ์Šคํ”„๋ง์ด ์•„๋‹ˆ๋ผ ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์— ์š”์ฒญ์ด ์ „๋‹ฌ๋˜๊ธฐ ์ „ํ›„ url ํŒจํ„ด๋ณ„ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ๋ถ€๊ฐ€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ์— ๋Œ€ํ•ด ์ž‘์—…์„ ํ•œ๋‹ค๊ณ  ํ•˜๋‹ˆ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ์‹คํ–‰๋˜๊ธฐ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์š”์ฒญ/์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„ ์ž‘์—…ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, ์Šคํ”„๋ง์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด๋„

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ๋กœ ๊ณตํ†ต ๋กœ๊น… ๋˜๋Š” Spring Security ํ•„ํ„ฐ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Spring Security ์„ค์ •์—์„œ `/login` ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„ ์ปจํŠธ๋กค๋Ÿฌ๊นŒ์ง€ ๊ฐ€์ง€ ์•Š๊ณ ๋„ ์œ ์ €๋ฅผ ์ธ์ฆํ•˜๋Š” ํ•„ํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ฃ .

์•„๋‹ˆ๋ฉด ์ธ์ฆ์ด ํ•„์š”ํ•œ url์— ๋Œ€ํ•ด ์ธ์ฆ๋œ ์œ ์ €์ธ์ง€ ํ™•์ธํ•˜๋Š” ํ•„ํ„ฐ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

 

ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” `javax.servlet`์˜ Fitler ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฉฐ,

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ต์‹ฌ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

public interface Filter {
	public default void init(FilterConfig filterConfig) throws ServletException {}
    
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;
    
    public default void destroy() {}
}
  • `init()`
    • ํ•„ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์„œ๋น„์Šค์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ
    • ์ด ๋ฉ”์„œ๋“œ๋ฅผ 1ํšŒ ์‹คํ–‰ํ•˜์—ฌ ํ•„ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ์ดํ›„ ์š”์ฒญ๋“ค์€ `doFilter()`๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • `doFilter()`
    • url ํŒจํ„ด์— ๋งž๋Š” ๋ชจ๋“  HTTP ์š”์ฒญ์ด ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ
    • FilterChain์„ ํ†ตํ•ด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์š”์ฒญ์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  • `destroy()`
    • ํ•„ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์ž์›์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ

์ธํ„ฐ์…‰ํ„ฐ(Interceptor)

์ธํ„ฐ์…‰ํ„ฐ ์—ญ์‹œ ํ•„ํ„ฐ์ฒ˜๋Ÿผ

์š”์ฒญ/์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„ ์ถ”๊ฐ€ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ•„ํ„ฐ์™€ ๋‹ฌ๋ฆฌ, ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์ด๋ฉฐ ์Šคํ”„๋ง ์ปจํ…์ŠคํŠธ์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

๋‹ค๋งŒ ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์š”์ฒญ์„ ๋„˜๊ธฐ๊ธฐ ์ „ ๋˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์‘๋‹ต์„ ๋„˜๊ธฐ๊ธฐ ์ „๊ณผ ๊ฐ™์ด

๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์ด์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์ธํ„ฐ์…‰ํ„ฐ๋Š” `org.springframework.web.servlet`์˜ `HandlerInterceptor` ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฉ”์„œ๋“œ๋Š” 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

public interface HandlerInterceptor {

    default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
        
        return true;
    }

    default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
        @Nullable ModelAndView modelAndView) throws Exception {
    }

    default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
        @Nullable Exception ex) throws Exception {
    }
}

 

  • `preHandle()`
    • ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ
    • ์ปจํŠธ๋กค๋Ÿฌ ์ด์ „์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ž‘์„ฑ
  • `postHandle()`
    • ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ(๋ทฐ ๋ Œ๋”๋ง ์ „)
    • ์ปจํŠธ๋กค๋Ÿฌ ์ดํ›„์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํ›„์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ž‘์„ฑ
  • `afterCompletion()`
    • ๋ชจ๋“  ๋ทฐ์—์„œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ผ์„ ํฌํ•จํ•ด ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„ ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ(๋ทฐ ๋ Œ๋”๋ง ํ›„)

 


์š”์•ฝ

๊ตฌ๋ถ„ ํ•„ํ„ฐ(Filter) ์ธํ„ฐ์…‰ํ„ฐ(Interceptor)
๊ด€๋ฆฌ ์ฃผ์ฒด ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ
์‹คํ–‰ ์‹œ์ (๋‹จ๊ณ„) ํด๋ผ์ด์–ธํŠธ์™€ ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ ์‚ฌ์ด ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์ด
์Šคํ”„๋ง์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€ X (์Šคํ”„๋ง ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ ์šฉ ์•ˆ ๋จ) O (์Šคํ”„๋ง์˜ `@ExceptionHandler`, `ControllerAdvice`๊ฐ€ ์ ์šฉ๋จ)
Request/Response ๊ฐ์ฒด ์กฐ์ž‘ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ O  X
์šฉ๋„ - ์š”์ฒญ ๋‹จ์œ„ ๋ณด์•ˆ/์ธ์ฆ/์ธ๊ฐ€ ์ž‘์—…
(ํ† ํฐ ์œ ํšจ์„ฑ ๋“ฑ ์ด ์š”์ฒญ์ด ์„œ๋ฒ„๋กœ ๋“ค์–ด์™€๋„ ๋˜๋Š”์ง€ 1์ฐจ์ ์œผ๋กœ ๊ฑฐ๋ฆ„)
- ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ ๋กœ๊น…(์ปจํŠธ๋กค๋Ÿฌ ํ˜ธ์ถœ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๋™์ž‘)
- Spring๊ณผ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•  ๊ธฐ๋Šฅ
- ์„ธ๋ถ€์ ์ธ ๋ณด์•ˆ/์ธ์ฆ/์ธ๊ฐ€ ์ž‘์—…
(ํŠน์ • API๋ณ„ Role ํ™•์ธ)
- API ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋กœ๊น…
- ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐ€๊ณต

์ฐธ๊ณ ์ž๋ฃŒ

[Spring] ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor)์˜ ๊ฐœ๋… ๋ฐ ์ฐจ์ด
[Spring] ํ•„ํ„ฐ(Filter) vs ์ธํ„ฐ์…‰ํ„ฐ(Interceptor) ์ฐจ์ด ๋ฐ ์šฉ๋„ - (1)
[Spring] Dispatcher-Servlet(๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ)์ด๋ž€? ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์˜ ๊ฐœ๋…๊ณผ ๋™์ž‘ ๊ณผ์ •
+ ๊ฐ™์ด ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€: Spring BOOT์˜ @RestController: HTTP ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ ๊ณผ์ •

'๐ŸŒฟSpring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] AOP ๊ธฐ๋ฐ˜ API ์š”์ฒญ๋ณ„ ์ฟผ๋ฆฌ ํšŸ์ˆ˜ / ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก์ • ์นด์šดํ„ฐ ๊ตฌํ˜„  (0) 2025.11.02
[Spring] AOP(Aspect Oriented Programming) ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ  (1) 2025.09.15
[Spring] DI(Dependency Injection) ์˜์กด์„ฑ ์ฃผ์ž…  (4) 2025.08.14
[Spring] IoC ์ œ์–ด์˜ ์—ญ์ „  (1) 2025.08.12
Spring์—์„œ ์บ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ: CaffeineCache, @Cacheable, @CachePut, @CacheEvict  (1) 2025.06.12
'๐ŸŒฟSpring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring] AOP ๊ธฐ๋ฐ˜ API ์š”์ฒญ๋ณ„ ์ฟผ๋ฆฌ ํšŸ์ˆ˜ / ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก์ • ์นด์šดํ„ฐ ๊ตฌํ˜„
  • [Spring] AOP(Aspect Oriented Programming) ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ
  • [Spring] DI(Dependency Injection) ์˜์กด์„ฑ ์ฃผ์ž…
  • [Spring] IoC ์ œ์–ด์˜ ์—ญ์ „
์†Œ์˜ ๐Ÿ€
์†Œ์˜ ๐Ÿ€
Hello World โœจ
  • ์†Œ์˜ ๐Ÿ€
    Soyoung's Dev Lab
    ์†Œ์˜ ๐Ÿ€
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ธ€์“ฐ๊ธฐ ๊ด€๋ฆฌ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (79)
      • ๐Ÿ“ข ๊ฒŒ์‹œํŒ (0)
      • ๐ŸŒฟSpring (20)
      • โ˜•Java (7)
        • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (7)
      • โš™๏ธ CS (26)
        • ๐Ÿ›œ ๋„คํŠธ์›Œํฌ (5)
        • ๐Ÿ“Š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
        • ๐Ÿ–ฒ๏ธ์šด์˜์ฒด์ œ (9)
        • ๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜ (4)
      • ๐Ÿ“ค ๋ฐฐํฌ (4)
        • Docker (4)
        • AWS (0)
      • ๐Ÿ“ฐ ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ (12)
      • ๐Ÿ–ฅ๏ธ ํ”„๋กœ์ ํŠธ (0)
      • ๐Ÿ‘ฉ‍๐Ÿ’ป ํ™œ๋™ & ํ›„๊ธฐ (1)
      • ๐Ÿต ์ด์•ผ๊ธฐ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํƒœ๊ทธ
  • ๋งํฌ

    • github
    • velog
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์šด์˜์ฒด์ œ
    ์ž๋ฃŒ๊ตฌ์กฐ
    ๋„คํŠธ์›Œํฌ
    docker
    Spring Security
    ๋ฐฐํฌ
    ์„œ๋ฒ„
    ๊ฐœ๋ฐœ
    ์œ„ํด๋ฆฌ ํŽ˜์ดํผ
    Java
    ์ฝ”๋“œ์ž‡ ์Šคํ”„๋ฆฐํŠธ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ๊ธฐ์ˆ  ๋ฉด์ ‘
    Spring
    GIT
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์†Œ์˜ ๐Ÿ€
[Spring] ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor) ์ฐจ์ด
์ƒ๋‹จ์œผ๋กœ

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