인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

임종민님의 프로필 이미지

작성한 질문수

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

회원 웹 기능 - 등록

save 를 눌렀을 때

해결된 질문

작성

·

97

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.

회원 웹 기능 - 등록 강의에서

PostMapping 중

join을 눌렀을 땐 강의처럼 잘 이동하는데

save를 누를 경우에

강의에서는 MemoryMemberRepositoty 클래스로 이동하는데

저 같은 경우에는

MemberRepository 인터페이스로 이동이 되더라고요

실행했을 경우엔 초기 화면으로 돌아가지지 않았습니다

 

코딩은 동일하게 따라했습니다

혹시 더 필요하신 코드 있으시면 더 남기겠습니다

package hello.hello_spring.controller;

import hello.hello_spring.domain.Member;
import hello.hello_spring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class MemberController {
    private final MemberService memberService;

    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
    @GetMapping("/members/new")
    public String createForm() {
        return "members/createMemberForm";
    }
    @PostMapping
    public String create(MemberForm form) {
        Member member = new Member();
        member.setName(form.getName());

        memberService.join(member);

        return "redirect:/";
    }
}

답변 2

1

임종민님의 프로필 이미지
임종민
질문자

아 제가 PostMapping 뒤를 빼먹었군요...

뒤에 ("/members/new") 붙이고 하니 잘 됩니다 감사합니다

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 임종민님.

질문 주신 내용은 코드의 흐름과 저장소의 사용에 관한 문제로 보입니다. 강의와 달리 코드가 MemoryMemberRepository 대신 MemberRepository 인터페이스로 이동하는지에 대해 설명드리겠습니다.

원인 분석

  1. 예상되는 저장소 문제: MemberRepository 인터페이스가 구현되지 않은 상태에서 호출하는 경우 문제가 발생할 수 있습니다. 강의에서 MemoryMemberRepository 또는 JPA 구현체를 명시적으로 Spring 빈으로 등록했는지를 먼저 확인해보셔야 합니다.

  2. 빈 등록: 강의에서 MemoryMemberRepository 빈으로 등록하지 않은 경우, Spring이 자동으로 다른 구현체를 찾으려고 시도할 수 있습니다.

해결 방안

  • 빈 설정 확인: MemoryMemberRepository가 구현체로 등록되어 있는지 확인하십시오. 강의에서 어떤 저장소 구현체가 사용되고 있는지 체크하시고, 동일하게 설정되었는지 봐주세요.

  • 구현체 등록: 강의에서 생성한 MemoryMemberRepository를 명시적으로 스프링 컨텍스트에 빈으로 등록하는 코드가 있는지 확인하세요. 예를 들어, @Repository 또는 @Service 어노테이션이 필요할 수 있습니다.

관련한 기존 답변이 있는 게시물들을 공유드립니다. 아래 링크들을 통해 더 자세한 내용을 확인해보세요:

이 외에도 추가적인 조언이나 설명이 필요하시면 질문을 더 남겨 주세요. 곧 지식공유자께서 추가적인 도움을 주실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.