Spring MVC
·
SpringBoot
목차1. Spring@MVC2. @Controller3. @Controller 단위 테스트4. Handler 메서드의 파라미터 Spring MVC란?- MVC 기반(model2)의 Web Application을 작성하기 위한 Spring Framework의 하위 모듈 - Front controller pattern : Dispatcherservlet - / 경로를 처리하므로 모든 요청을 받아들임 - Action parameter방식이 아닌 URL 기반으로 요청 분기 - 주요 특징 - Annotaion 기반 -> spring @MVC - 다양한 view 지원 - restful 웹 서비스 지원 - 테스트 용 Spring@MVC 구성요소- DispatcherServlet - 가장 중추적인 역할 ..
AOP(Aspect Oriented Programming) - (2)
·
SpringBoot
이어서 AOP의 동작 원리에 대해서 알아보자.AOP의 동작원리에서 Proxy라는 얘가 등장하는데 중요한 친구이다. AOP 동작 원리, 프록시(Proxy)를 중심으로 까보자핵심 키워드 하나만 기억하면 된다. “프록시 = 가짜 껍데기”진짜 객체 앞에 서서 모든 호출을 대신 받아주고, 필요한 ‘양념(공통 로직)’을 치고 나서 본게임(핵심 로직)을 실행시키는 녀석이다.. 1. 스프링 부트가 애플리케이션을 올릴 때 무슨 일이 일어날까컴포넌트 스캔@Aspect 붙은 클래스 발견 → “오? AOP 쓰네?”포인트컷 분석execution(* com.example.demo.controller..*(..))“controller 패키지에 있는 모든 메서드 잡아라!”프록시 빈 생성포인트컷에 걸린 클래스마다 프록시 객체를 하나씩..
AOP(Aspect Oriented Programming) - (1)
·
SpringBoot
AOP에 대해서 알아보자.AOP는 Spring framework의 특징 중 하나이다.그렇다면 왜 이렇게 AOP가 중요한지 알아보자. AOP를 처음 보면 무슨 말인지 이해가 안될 것이다. 또한 왜 AOP와 나중에 배우게 될 Filter, Intercepter와 비교를 하는지 모를 것이다.하지만 이 글을 보고 나면 AOP에 대해서 어느 정도 이해가 될 것이다. AOP의 정의는 관점 지향 프로그래밍이다. 다시 말해 문제를 바라보는 관점을 기준으로 프로그래밍을 하는 방법이다.그렇다면 관점을 기준으로 프로그래밍을 한다는 것이 무엇일까? 우리가 어떤 프로젝트를 코딩하다보면 분면 내가 만들고 있는 프로젝트의 주된 기능과 부가적인 기능이 있을 것이다.여기서 주되 기능은 핵심 관심사항이고, 부가적인 기능은 공통관심 사항..
DI(Dependency Injection) - (3)
·
SpringBoot
묵시적 DI(Implicit Dependency Injection) 스프링에서 묵시적 DI는 개발자가 “어떤 빈을 연결할지”를 직접 코드에 쓰지 않고,스프링 컨테이너가 자동으로 빈을 찾아 주입해 주는 방식1. @Component: 빈 후보(Bean Candidate) 등록역할: 이 클래스는 “스프링이 관리할 수 있는 빈”이라는 표시만 한다.실제 빈 등록은 @ComponentScan이 해당 패키지를 스캔해야 일어난다.기본 빈 이름클래스명 PascalCase → 메서드명 스타일 camelCase로 변환예: MyService → myService@Component("customName") 속성으로 직접 지정 가능// 빈 후보 표시@Componentpublic class Hat { … } // 빈 이..
DI(Dependency Injection) - (2)
·
SpringBoot
명시적 DI가 어떻게 동작하는지 단계별로 쪼개서 설명1. Maven 의존성 추가spring-context 하나만 넣으면,IoC 컨테이너(Core BeanFactory)애노테이션 지원JavaConfig (@Configuration/@Bean)AOP, 이벤트, 리소스 처리 등 핵심 모듈이 전부 따라온다. org.springframework spring-context 6.2.2이 한 줄로 스프링 컨테이너가 제공하는 모든 기능을 쓸 준비가 된다.2. 설정 클래스(@Configuration) 작성@Configuration:‘이 클래스는 빈 설정 정보를 담은 파일입니다’라고 표시한다.스프링이 이 클래스를 읽어서 내부적으로 CGLIB 프록시 클래스로 감싼다.그래서 @Bean 메서드를 여러 번 호출해도 항상 싱글..
DI(Dependency Injection) - (1)
·
SpringBoot
의존성과 DI의존성은 우리가 무언가 행동 하기 위해 사용해야 하는 도구를 말한다. 예를 들어 우리는 빨래하기 위해 세탁기에 의존하고, 세탁기가 없다면 빨래하기 힘들 것이다.이처럼, 의존성은 없애기 힘들다. 그러면 우리는 의존성을 어떤 식으로 가지고 있을까? 필요한 물건을 사는 것과 빌리는 것(랜탈)을 비교해보자. 구매렌탈초기 비용모든 상품 직접 선정·비교→ 많은 리소스 투입1차적인 비교·선정은 렌탈 업체가→ 적은 리소스 투입핵심 기능빨래빨래상대적 장점/단점장점내꺼니까 내맘대로 (당근하기, 페인트 칠하기)단점제품 직접 관리 필요– 고장 수리·청소 등에 직접 개입장점제품 관리는 렌탈 업체에서 처리 → 유지 보수 용이단점당근 시 계약 위반, 총 비용은 더 비쌈결론빨래를 위해 보유한 세탁기!당근할 일은 없지만,..
Spring Framework
·
SpringBoot
Framwork? - Frame을 가지고 하는 작업 또는 구조물의 뼈대나 틀을 말한다. - SW의 시선으로 바라본다면 비지니스 로직이 빠진 뼈대만 갖춰진 반제품 형태의 애플리케이션이라고 볼 수 있다.컴퓨터 프로그래밍에서 소프트웨어 프레임워크는 소기의 목적을 달성하거나 복잡한 문제를 해결하고 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조, 프레임워크라고도 한다. - 위키백과 - 예시 )파워포인트 [프레임워크] + 발표내용[비즈니스 로직]전자레인지[프레임워크] + 음식[비즈니스 로직] Spring Framework - 자바 애플리케이션 개발을 위한 경량 framwork - 스프링 부트랑 다른 개념인 것을 유의!! - 프레임워크는 비즈니스 로직하고는 무관한 귀찮고..
세션과 JWT의 차이
·
SpringBoot
면접에서 웹 페이지를 구현할 때 인증 시스템을 어떻게 설계할 건가요? 라고 물어본다면 뭐라고 대답을 할 것인지 고민해 본다. 나는 세션은 다뤄본적이 없어서  JWT를 사용한다고 말할 것이다. 물론 이렇게 대답하면 무조건 면접에서 떨어진다.   이 질문은 초보자와 숙련된 개발자 모두에게 일반적으로 묻는 질문이다. 특히 이력서에 JWT를 언급한 경우 더욱 그렇다. 그러면 어떤 대답이 정답일까?기업들은 어떤 답변을 기대하고 있을까? 이 질문에 대한 완벽한 답변을 해주는 좋은 글을 발견해서 기록해본다. 세션과 JWT의 진정한 트레이드오프는 무엇이며, 어떤 상황에서 어떤 선택을 해야 하는지 알려주는 글이다. 세션 기반 인증세션 기반 인증은 서버 측에 세션 정보를 저장하고 사용자에게 세션 ID를 제공하여 요청을 인..
SpringBoot 잡동사니
·
SpringBoot
해당 카테고리는 내가 springboot를 공부하면서 기록하고 싶은 모든 것들을 남기는 공간이다. 내 생각을 적을 수도 있고, 인용해서 가져올 수도 있고, 직접 경험한 것을 공유 할 수도 있다. 매우 기대가 된다..