inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

Validator에 대하여 질문

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

@Data @Builder @NoArgsConstructor @AllArgsConstructor public class LoginDto { @NotBlank private String email; @NotBlank private String password; } ------------------------------------- @Component public class LoginValidator implements Validator { private final UserRepository userRepository; public LoginValidator(UserRepository userRepository) { this.userRepository = userRepository; } @Override public boolean supports(Class<?> clazz) { return LoginDto.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { LoginDto loginDto = (LoginDto) target; User user = userRepository.findByEmail(loginDto.getEmail()); if (user == null) { throw new LoginFailedException("User not found"); } if (!user.getPassword().equals(loginDto.getPassword())) { throw new LoginFailedException("Invalid password"); } } } 위 코드처럼 DTO 클래스에서 간단한 검증은 bean validation으로 시행하고, 복잡한 검증로직은 LoginValidator에서 관리 및 커스텀 예외를 리턴하는 방식은 안좋은 방식인가요? 제가 알기로는 errors는 bindingresult처럼 복잡한 검증이 아니라 단순한 검증결과를 담는 것으로 알고 있는데, validate를 override하여 복잡한 검증 실행 및 검증 결과를 LoginFailedException(커스텀 예외)으로 반환하려고 하니 Errors를 리턴해야 한다는 강제성 때문에 혼란이 생겼습니다. 따라서 제가 궁금한 점은, 간단한 검증작업(ex. 정규식) 과 복잡한 검증작업(ex.이메일,비밀번호가 DB에 있는지 검증)은 어떻게 처리하는게 이상적인가? 입니다. 저는 각각 Bean Validation, Validator(커스텀 예외 반환)로 해보려했는데 아닌 것 같아서 질문드립니다. 감사합니다.

  • spring
  • mvc
liltjay 댓글 1 좋아요 0 조회수 165

Validator 클래스

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

@Data @Builder @NoArgsConstructor @AllArgsConstructor public class LoginDto { @NotBlank private String email; @NotBlank private String password; } ------------------------------------- @Component public class LoginValidator implements Validator { private final UserRepository userRepository; public LoginValidator(UserRepository userRepository) { this.userRepository = userRepository; } @Override public boolean supports(Class<?> clazz) { return LoginDto.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { LoginDto loginDto = (LoginDto) target; User user = userRepository.findByEmail(loginDto.getEmail()); if (user == null) { throw new LoginFailedException("User not found"); } if (!user.getPassword().equals(loginDto.getPassword())) { throw new LoginFailedException("Invalid password"); } } } 위 코드처럼 DTO 클래스에서 간단한 검증은 bean validation으로 시행하고, 복잡한 검증로직은 LoginValidator에서 관리 및 커스텀 예외를 리턴하는 방식은 안좋은 방식인가요? 제가 알기로는 errors는 bindingresult처럼 복잡한 검증이 아니라 단순한 검증결과를 담는 것으로 알고 있는데, validate를 override하여 복잡한 검증 실행 및 검증 결과를 LoginFailedException(커스텀 예외)으로 반환하려고 하니 Errors를 리턴해야 한다는 강제성 때문에 혼란이 생겼습니다. 따라서 제가 궁금한 점은, 간단한 검증작업(ex. 정규식) 과 복잡한 검증작업(ex.이메일,비밀번호가 DB에 있는지 검증)은 어떻게 처리하는게 이상적인가? 입니다. 저는 각각 Bean Validation, Validator(커스텀 예외 반환)로 해보려했는데 아닌 것 같아서 질문드립니다. 감사합니다.

  • spring
  • mvc
댓글 1 좋아요 0 조회수 169

조건문 강의 예시문제 질문있습니다.

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

조건문 강의 5:46초 에 나오는 조건문 예시문제에서 출력값이 5보다 크네요 라고 하셨는데 5보다 크지 않아요 가 맞지 않나요 ? number = 3 3 > 5 니깐 else 문이 출력될 것 같습니다

  • python
  • java
  • c
  • 정보처리기사
kimjg308 댓글 2 좋아요 2 조회수 433

강의 내용에 기출문제도 포함되어 있나요 ?

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요. 강의 잘 듣고 있습니다. 아직 다 듣지 않았지만 궁금한 사항이 있어서 여쭤봅니다. 현재 올라와있는 동영상 강의는 완성본인가요, 아니면 계속 업데이트 될 예정인가요 ? 강의 내용에 기출문제도 포함되어 있나요 ? PDF 파일은 어디에 있을까요 ? 감사합니다.

  • python
  • java
  • c
  • 정보처리기사
kimjg308 댓글 1 좋아요 0 조회수 295

자바 복습 질문

해결됨

김영한의 실전 자바 - 중급 1편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 질문이 생겨서 글을 남깁니다. 저가 이것저것(아픔 + 번아웃..등)이 있어서 한 2주 정도 인가요? 코딩하는데 거의 손을 놓고 있엇습니다.(해 봐야 30분에서 2시간이하 정확히는 기억이 안남 ,아니면 아에 안함 ) 그리고 나서 날짜와 시간 사이에서 너무 막혀서(캘린더 는 정말 싫네요.. 하신 분들 존경 합니다.) 에라이 전에 있던 문제 풀이나 복습 해보자 하고 하였는데.. String챕터 문제 풀이 부터 막히더라고요.(문제와 풀이만 보고서여.pdf파일에 있는 내용 참조 안함) 그래서 다시 보고 있긴 한데, 시간이 지나고 나서( ex)예외처리까지 챕터 까지했을때 - 7월달까지 중급2편을 끝내고 싶었는데.. 역시 계획 대로는 안되네요...), 저가 이것들을 할 수 있을까 하는 의문이 들더라고요. 이럴 때에는 어떻게 해야 하는지 궁금합니다. 지금은 저가 중요하다고 생각하는 것을 손코딩 + 동영상 보면서 코드 를 지우고 다시 침, 이렇게 하고 있긴 한데 더욱 좋은 방법이 있을까요? 아니면 지금 이대로 계속 하는 게 맞는 방법인가요? 답변 부탁드립니다.

  • java
  • 객체지향
생각하는자 댓글 1 좋아요 -1 조회수 381

프로젝트 생성 시 jdbc:failed 하면서 빌드가 실패했다고 나옵니다.

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

> Task :prepareKotlinBuildScriptModel UP-TO-DATE FAILURE: Build failed with an exception. * What went wrong: Could not resolve all dependencies for configuration ':compileClasspath'. Failed to calculate the value of task ':compileJava' property 'javaCompiler'. Cannot find a Java installation on your machine matching this tasks requirements: {languageVersion=17, vendor=any, implementation=vendor-specific} for MAC_OS on aarch64. No locally installed toolchains match and toolchain download repositories have not been configured. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 504ms 이런 오류가 발생합니다.ㅜㅜ

  • spring
  • mvc
  • spring-jdbc
김지현 댓글 2 좋아요 0 조회수 1987

서블릿과 컨트롤러의 차이

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

서블릿과 컨트롤러의 차이가 뭔가요? 서블릿도 url로 요청 오는 것을 받아들이고 컨트롤러도 url 요청 오는 것을 받아들이는데 서블릿과 컨트롤러의 차이를 모르겠습니다. 참고로 관련한 다른 글을 봐도 이해가 안 돼서 질문 드립니다.

  • spring
  • mvc
공태성 댓글 3 좋아요 1 조회수 490

섹션 5.

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

@Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); @GetMapping("/new-form") public String newForm() { return "new-form"; } @PostMapping("/save") public String save(@RequestParam("username") String username, @RequestParam("age") int age, Model model) { Member member = new Member(username, age); memberRepository.save(member); model.addAttribute("member", member); return "save-result"; } @GetMapping public String members(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } } RequestMappingHandlerAdapter에서 핸들러 어댑터를 찾으려면 핸들러 어탭터를 등록해야 하는데 스프링에서 애노테이션 인식해서 저장되는 핸들러 어탭터 뭘로 등록되는 건가요? 위에 코드는 그냥 핸들러로 등록되는 거고, 그럼 SpringMemberControllerV3 핸들러를 실행시켜줄 핸들러 어댑터는 자동으로 생성되는데 궁금한 건 v4에서는 process로 모든 메서드가 같아서 처리가 가능했는데 지금은 다른데 어떻게 처리가 되는 겁니까? SpringMemberControllerV3에서 메서드가 3개니까 SpringMemberControllerV3을 호출해줄 핸들러 어댑터가 각 newForm, save, members를 사용할 수 있게 3개 생성되는 건가요??

  • spring
  • mvc
권정익 댓글 1 좋아요 0 조회수 141

SpringMemberFormControllerV1 404 에러

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] http://localhost:8080/springmvc/v1/members/new-form 접속시에 404 에러가 납니다 매핑이 안되는거 같은데... 왜 일까요 ㅠㅠㅠ 도와주세욥 소스코드입니다! commit 11 기준으로 봐주시면 감사하겠습니다! https://github.com/Leejuseop/Spring_Mvc_1

  • spring
  • mvc
이주섭 댓글 1 좋아요 0 조회수 337

변수에 final 붙인 이유

해결됨

김영한의 실전 자바 - 중급 1편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] NetworkClient 클래스, SendException 클래스, ConnectException 클래스들의 필드를 캡슐화로 외부에서 상태 변경을 막았는데 왜 final로 정의한 이유가 궁금합니다.

  • java
  • 객체지향
규원 댓글 1 좋아요 0 조회수 248

list.sort() vs Collections.sort()

해결됨

김영한의 실전 자바 - 중급 2편

강의 내용중 Comparable, Comparator 파트에서 List 데이터를 정렬할 때 Collections.sort() 와 list.sort() 중 list.sort를 권장하는 이유를 조금 더 자세히 알고 싶습니다. 이 부분에서 list.sort()를 사용하는 게 더 객체지향적인 코드 라고 말씀해주셨는데 List 인터페이스에 정의된 sort() 메서드를 사용하는 게 Collections class 에 정의된 static 메서드보다 어떤 측면에서 더 객체지향적인지 느낌은 오는데 이것 때문이다 라고 정리가 잘 안돼서 질문 드립니다. Collections 의 코드를 봤을 때 내부에서 Collections.sort(list, comparator)를 보게되면 list.sort(comparator) 메서드를 사용하고 있는데 그러면 굳이 Collections.sort()를 사용해야 할 케이스가 따로 있어서 정의한 것인지 어떤 경우에 사용하는지 궁금합니다. public static <T> void sort(List<T> list, Comparator<? super T> c) { list.sort(c); }

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
won 댓글 1 좋아요 0 조회수 236

예외 처리 질문

미해결

김영한의 실전 자바 - 중급 1편

안녕하세요. 예외 처리 질문드립니다. checked exception을 잡을 때 catch 블럭에서 임의로 발생시킨 MyCheckedException이 아닌 RuntimeException을 잡으려고 하면 여기서 예외 처리를 못하니 throws로 예외를 다시 던져줘서 코드가 에러가 없었는데, unchecked exception을 잡을 때 똑같이 catch 블럭에서 발생된 MyUncheckedException이 아닌 다른 예외를 catch로 선언하고 나서 못 잡을 경우 밖으로 예외를 던지나 보려고 했는데 catch 에서 MyUncheckedException이 아닌 예외 중 어떤 건 에러가 안 나고 어떤 건 에러가 납니다. 예를 들어 NullPointerExceptoin으로 잡으려고 하면 코드에 이상이 없고, MyCheckedException으로 잡으려고 하면 에러가 발생합니다. 어차피 둘 다 catch 블럭에서 처리할 수 없어서 밖으로 던질텐데 왜 이런 걸까요 ? public void callCatch(){ try{ client.call(); }catch(NullPointerException e){ System.out.println("예외처리, message = " + e.getMessage()); } System.out.println("정상 흐름"); } public void callCatch(){ try{ client.call(); }catch(MyCheckedException e){ System.out.println("예외처리, message = " + e.getMessage()); } System.out.println("정상 흐름"); } java: exception exception.basic.checked.MyCheckedException is never thrown in body of corresponding try statement

  • java
  • 객체지향
인프린 댓글 2 좋아요 0 조회수 301

오타라고 봐도 될지 모르겠는데 일단 제보합니다.

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 6. 로그인 처리1 - 쿠키, 세션.pdf (v20240408) '쿠키를 사용해서 로그인Id를 전달해서 ~~~' 이런 식으로 나와 있는데 여기에 써진 로그인Id가 loginId랑 같은 의미라면 혹시 오타일까요? 쿠키를 통해 전달하는 건 MemberRepository의 store에 저장된 id라서 memberId 혹은 id가 좀 더 명확하지 않나 싶어서 제보합니다.

  • spring
  • mvc
11 1 댓글 1 좋아요 0 조회수 226

섹션5. RequestMappingHandlerAdapter

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

@Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); @GetMapping("/new-form") public String newForm() { return "new-form"; } @PostMapping("/save") public String save(@RequestParam("username") String username, @RequestParam("age") int age, Model model) { Member member = new Member(username, age); memberRepository.save(member); model.addAttribute("member", member); return "save-result"; } @GetMapping public String members(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } } 코드를 실행하면 스프링 빈에 Controller가 붙은 SpringMemberControllerV3가 등록되고, 자동으로 맵핑도 됩니다. 질문: http 요청이 오면, mapping된 핸들러를 찾습니다. 여기서 핸들러는 SpringMemberControllerV3인 건가요? 핸들러가 핸들러 어댑터를 찾아야하는데 핸들러 어댑터 맵핑 할 때는 뭐가 등록이 되는 건가요? 제가 이해한 건 SpringMemberControllerV3 클래스가 핸들러 어댑터로 등록이 되고, SpringMemberControllerV3 클래스 안에 있는 메서드가 핸들러로 등록이 되는 거 맞나요? 어떤게 핸들러 어댑터고 어떤 게 핸들러(컨트롤러) 인지 잘 모르겠습니다. 여기서는 핸들러(컨트롤러)만 만들어놓은 거 같은데 여기서 핸들러 어댑터는 뭐로 맵핑이 되는지를 몰라서 핸들러 어댑터를 찾을 때 어떤 것과 비교를 하는 건가요?

  • spring
  • mvc
권정익 댓글 2 좋아요 1 조회수 247

h2-database 오류 질문

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Database "/home/ubuntu/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-224] 90149/90149 (도움말) 오류가 발생합니다.. 구글링을 해보니t est.mv. db 를 생성해주어야하더라구요.. 원래 맨처음에는 잘 됐는데 비번 잘못설정해서 다 삭제하고 다시 설치하였습니다. 일단 설명대로 C:\Users\user에 직접 만들어주었습니다. 하지만 같은 오류가 발생해서 원인을 모르겠습니다 ㅠㅠ.ㅠ

  • java
  • spring
  • mvc
  • spring-boot
백엔드 지망생 댓글 2 좋아요 0 조회수 696

예외처리

해결됨

스프링 DB 1편 - 데이터 접근 핵심 원리

예외처리에 관련해 질문이 있습니다. try 구문안에서 예외가 발생하면 밑에있는 try의 남은 구문 건너뛰고 바로 catch문으로가서 잡아주는것으로 알고있습니다. 그런데 공부하다보니까 헷갈리는게 MemberRepository에 있는 save메서드로 예를 들면, con.prepareStatement(sql)부터 SQLException을 발생시키는데 어떻게 try안에 있는 것들이 정상적으로 수행되는지 궁금합니다. 예외가 나오는 순간 catch문으로가서 catch구문을 수행하는 것이 아닌가요 ?? @Override public Member save(Member member) { String sql = "insert into member(member_id,money) values(?,?)"; Connection con = null; PreparedStatement pstmt = null; try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setString(1, member.getMemberId()); pstmt.setInt(2, member.getMoney()); pstmt.executeUpdate(); //수정 return member; } catch (SQLException e) { log.error("db error", e); throw new MyDbException(e); }finally { close(con, pstmt, null); } }

  • spring
  • mvc
  • spring-jdbc
해톨 댓글 1 좋아요 0 조회수 210

예제 2번 풀이

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

예제 2번 &&다음 !가 있는 거면 아닌거 찾는 거 아닌가요? 해설 다시 부탁드립니다.

  • python
  • java
  • c
  • 정보처리기사
Aaaar 댓글 1 좋아요 0 조회수 386

Content-Type 질문

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

1번 text/html 2번 application/x-www-form-urlencoded 질문: a. 둘 다 Content-Type이 html인 걸로 알고있는데 2번은 html form에 사용되는 거고, 1번도 html form에 사용되는 거 아닌가요?! b. 1번과 2번의 차이가 뭔가요? c. 1번과 2번의 post전송 방식이 어떻게 다른 건가요?

  • spring
  • mvc
권정익 댓글 1 좋아요 0 조회수 168

test.mv.db 파일이 생성된걸 어디에서 확인 가능한가요?

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. test.m v.db 파일이 생성된걸 어디에서 확인 가능한가요?

  • spring
  • mvc
  • spring-jdbc
service 댓글 2 좋아요 0 조회수 458

LettuceLock 에러

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

안녕하세요. 올려주신 강의를 보고 따라하다가 에러가 발생하여 질문드립니다. 모든 테스트는 정상으로 떨어지나, LettuceLock 테스트만 에러가 발생을 하네요... 제가 디버깅 했을 때는 public Boolean lock(Long key) { return redisTemplate .opsForValue() .setIfAbsent(generateKey(key), "lock", Duration.ofMillis(3_000)); } 해당 부분이 키를 갖고 오지 못하는 거 같은데, 해결 방법이 있을까요??

  • java
  • spring
  • 동시성
용정 댓글 2 좋아요 0 조회수 371

인기 태그

인프런 TOP Writers

주간 인기글