스프링6 [스프링] - redirectAttribute.addFlashAttribute() 동작 원리 (feat. 쿠키와 세션) 1. addFlashAttirbute()의 특이한 점 스프링에서 아래와 같은 addFlashAttribute() 코드를 통해 일시적으로 데이터를 전달할 수 있다. @GetMapping("/register") public void register() { } @PostMapping("/register") public void register(@Valid RegisterDTO registerDTO, BindingResult bindingResult, RedirectAttribute redirectAttribute) { if ( bindingResult.hasErrors ) { redirectAttribute.addFlashAttribute("errors", bindingResult.getAllErrors()).. 2024. 1. 26. [스프링] - 스프링이 Java Bean이 유효성을 검증하는 방법 ※ 이 포스팅은 스프링 프레임워크가 어떻게 @Valid 같은 어노테이션을 체크하고 실행하는지 그 원리를 공부한 것을 정리한 포스팅입니다. 저에게 어려운 주제라 오류가 있을 수 있습니다. 1. 유효성 검증은 JavaEE 스펙. 스프링 프레임워크는 자동으로 @Valid와 같은 어노테이션을 식별하고, 관련 데이터의 각종 유효성들을 검증해준다. 그리고 그 결과를 BindingResult 객체에 정보를 저장하고 컨트롤러에게 넘겨준다. 이렇게 이야기를 듣고 기술을 쓰면은 마치 유효성 검증이 스프링의 특수한 기능처럼 들린다. 그러나 파고 들더가면 오히려 스프링이 유효성 검증 스펙을 사용하는 입장일 뿐이라는 것이 드러난다. 즉, 유효성 검사와 관련된 API와 기능들은 스프링에 종속된 개념들이 아니다. 우선, 유효성 검.. 2024. 1. 8. [마이바티스] - 마이바티스 스프링 빌드 방법 마이바티스는 단독으로도 라이브러리를 사용할 수 있지만(링크를 클릭하면 방법이 나온다), 친절하게도 스프링 프로젝트에서는 마이바티스를 함께 사용하는 라이브러리를 제공해준다. 이를 이용하면 아주 쉽게 스프링 프로젝트에서 마이바티스를 이용할 수 있다. 실제로 스프링 프로젝트 시 마이바티스를 단독으로 사용하진 않는다고 들었다. 내가 따로 마이바티스 단독 설정을 정리하고 포스팅한 이유는 스프링에서 마이바티스 설정 시, 단독 과정과 비교하면 설정을 이해하기가 수월하기 때문이었다. 그 내용을 간략하게 요약하면, 1) SessionFactory에게 파일로 데이터베이스 드라이버와 Datasource, 그리고 매퍼 xml을 알려준다. 2) SqlSessionFactory가 xml 정보를 토대로 session을 생성하고, .. 2024. 1. 7. [스프링] - Formatter 개념 정리 1. 파라미터 자동 수집과 포매터 스프링 웹 MVC의 장점 중 하나는 쓸데 없는 코드를 줄일 수 있다는 점이다. 쿼리 스트링 등으로 전달되는 파라미터를 자동으로 캐치하고 형 변환을 통해 인자로 바로 전달할 수 있다는 점도 엄청난 장점이다. 이전에는 HttpServletRequest에서 getParameter()를 통해 일일이 문자열 데이터를 받아 형변환을 했지만, 스프링에서는 그런 코드는 생략된다. 하지만 생략되는 만큼 문제가 발생하는 법! 특히 HTTP 요청의 쿼리 스트링이나 body에 포함되는 데이터는 기본적으로는 문자열이다. 문자열을 자동으로 String, int, long, boolean으로 형변환하는 데는 아주 크게 무리는 없지만, 문자열을 원하는 객체 타입으로 바꾸려면 개발자가 설정을 해줘야 .. 2024. 1. 6. [스프링] - 스프링 웹 MVC 프로젝트 세팅 방법 # 스프링 프레임워크 프로젝트 생성 # 스프링(Spring) 프레임워크는 웹에 주로 사용되지만 그렇다고 웹에 종속된 프레임워크가 아니다. 스프링은 의존성 주입(Dependency Injection) 기법을 적용한 객체지향 프레임워크다. 따라서 스프링의 코어는 의존성 주입과 관련된 기술이고, 바로 여기에 웹MVC와 같은 라이브러리를 추가로 설정해 웹 프로젝트로 만들어 사용하는 것이다. 여기서는 웹을 기반으로한 스프링 프레임워크 프로젝트 세팅에 대해 정리하려고 한다. 왜냐하면 자바 스프링 프로젝트는 언제나 프로젝트 세팅이 까다로웠기 때문이다. 이 참에 정리해보았다. ※ 원래 프로젝트 빌드 시, 롬복(lombok)이나 로그(log4j2)를 함께 쓰지만, 여기서는 순수하게 스프링만 파악하기 위해 일부러 생략해보.. 2024. 1. 6. [lombok] - @RequiredArgsContructor와 @Qualifier 같이 쓰는 원리 스프링 프로젝트에서 @Qualifier 어노테이션을 통해 원하는 빈(bean)의 이름을 특정해 주입받을 수 있다. 그러나 롬복과 함께 사용하기 위해서는 클래스패스에 아래의 lombok.config 파일을 아래처럼 설정해야 비로소 제대로 스프링이 의존성을 주입해줄 수 있다. lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier 이 포스팅은 위 파일을 사용해야 하는 이유에 대한 것이다. 1. 생성자 통해 의존성 주입 받기 스프링 프레임워크 사용 시, 일반적으로 생성자를 통해 의존성을 주입받는다. 필드 주입과 세터 주입은 각각의 단점이 명확하기 때문에 잘 사용되진 않는다. 생성자를 통해 의존성을 주입받기 위해서는.. 2024. 1. 6. 이전 1 다음