Spring
-
[Spring] 스프링 컨테이너의 생성 과정Spring 2021. 5. 23. 19:34
1. 스프링 컨테이너 생성 더보기 2. 스프링 빈 등록 더보기 3. 스프링 빈 의존관계 설정 더보기 + 의존관계 자동 주입시 싱글톤을 어떻게 유지할까? 더보기 만약 다음과 같은 @Configuration 파일을 사용한다고 할 때 memberRepository() 함수는 두 번 호출된다 스프링은 이를 어떻게 처리할까 스프링은 스프링 빈을 등록할 때 그 클래스를 사용하지 않고 클래스의 Wrapper 클래스를 사용한다 만약 해당 생성자가 만들어져 있다면 해당 생성자를 return하고 그렇지 않다면 새로 만들어서 return할 것이다
-
[Spring MVC] HTTP 메시지 컨버터Spring/Spring MVC 2021. 5. 22. 20:07
HTTP 메시지 컨버터 동작 과정 앞에서 본 것처럼 요청 데이터나 응답 데이터의 타입은 다양하다 이렇게 다양한 요청 데이터, 응답 데이터를 사용할 수 있는 것은 HTTP 메시지 컨버터가 있기 때문이다 이 메시지 컨버터는 어디에서 어떻게 동작하는지 알아보자 일단 Spring MVC 전체 구조를 보자 위 과정을 보면 요청 데이터나 응답 데이터를 가공하는 과정은 핸들러 어댑터에서 이루어진다고 유추할 수 있다 실제로 RequestMappingHandlerAdapter가 그 과정에 있다 RequestMappingHandlerAdapter는 Argument Resolver를 통해 핸들러에서 파라미터를 받아오고 객체를 생성하여 넘겨준다 HTTP 메시지 컨버터는 이 Argument Resolver, ReturnValu..
-
[Spring MVC] HTTP 요청 파라미터 - @ModelAttributeSpring/Spring MVC 2021. 5. 22. 16:19
@ModelAttribute 실제 개발을 하면 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야 한다 이를 사용하면 다음과 같은 코드가 될 것이다 Spring에서는 @ModelAttribute 어노테이션을 통해 해당 과정을 한번에 해결해준다 이를 사용하면 다음과 같이 코드를 바꿀 수 있다 @ModelAttribute 동작 과정 1. HelloData 객체 생성 2. 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾는다 3. 찾은 프로퍼티를 객체에 바인딩 @ModelAttribute 생략하기 Spring은 해당 어노테이션을 생략 가능하게 설계되어있다 따라서 다음과 같은 코드가 사용 가능하다 하지만 요청 파라미터의 @RequestParam 어노테이션도 생략이 가능하므로 S..
-
[Spring MVC] 파라미터 받아오기 - 주의사항Spring/Spring MVC 2021. 5. 22. 15:52
@RequestParam을 사용하면 간편하게 파라미터를 받아올 수 있다 @RequestParam(required= ) 기능을 사용하면 파라미터를 선택적으로 받아올 수 있는데 여기에 몇가지 주의할 점이 있다 1. 파라미터 이름만 사용한 경우 만약 파라미터의 이름만 있고 값이 없는 경우 빈 문자로 입력된다 다음처럼 username을 입력하지 않는다면 null이 아니라 "" 문자열이 전달된다 2. 기본형(primitive)에 null을 입력한 경우 다음 예제의 경우 age는 필수 값이 아니다 (required=false) 따라서 age를 입력하지 않은 경우 정상 동작해야 하지만 실행해보면 에러가 발생한다 그 이유는 입력값에 null이 들어갔기 때문인데 이는 기본 자료형(primitive)이 null을 지원하지..
-
[Spring MVC] 파라미터 받아오기 - Spring 사용하기Spring/Spring MVC 2021. 5. 22. 14:44
클라이언트의 요청 메시지에서 @RequestParam 어노테이션으로 파라미터를 받아 사용할 수 있다 Spring을 사용하면 해당 어노테이션을 더 효율적으로 사용할 수 있다 1. HttpServletRequest 사용 HttpServletRequest 객체에서 직접 파라미터를 받아오는 방식이다 2. @RequestParam 사용 핸들러 파라미터에 @RequestParam 어노테이션을 추가하면 메시지를 받고 받은 메시지에서 객체로 받아오는 과정을 생략할 수 있다 3. 파라미터 이름 맞추기 @RequestParam 어노테이션에서 받아오는 파라미터명과 핸들러의 파라미터명을 일치시키면 어노테이션 파라미터를 생략할 수 있다 4. 어노테이션 생략하기 위 조건을 모두 만족시키고 String, int 등의 단순 타입이라..
-
[Spring MVC] @RequestMapping 요청 매핑Spring/Spring MVC 2021. 5. 20. 18:43
컨트롤러의 메소드에 @ReqeustMapping 어노테이션을 추가하면 클라이언트의 요청을 수행할 수 있다 또한 추가적으로 @RequestMapping 어노테이션에 파라미터를 추가하면 요청을 선택적으로 수행할 수 있다 이번엔 요청 매핑에 관련된 설정 정보들을 알아 볼 것이다 @RestController 일반적인 @Controller가 반환하는 String값은 뷰로 인식되어 렌더링 과정을 거친다. 하지만 @RestController가 반환하는 String 값은 렌더링 과정 없이 HTTP Body에 그대로 들어간다. 어노테이션의 Rest는 Rest API의 Rest를 의미하며 Json을 return 할 수 있도록 설계된 것이다 @RequestMapping("/hello-basic", "hello-koji") ..
-
[Spring] 로깅 라이브러리 - SLJ4J, LogbackSpring 2021. 5. 20. 16:25
스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리 (spring-boot-starter-logging)가 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다 SLF4J - http://www.slf4j.org SLF4J Simple Logging Facade for Java (SLF4J) The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging fra..