>Java >java지도 시간 >idea springBoot 프로젝트에 자동으로 주입되는 빈 매퍼 문제를 해결하는 방법

idea springBoot 프로젝트에 자동으로 주입되는 빈 매퍼 문제를 해결하는 방법

WBOY
WBOY앞으로
2023-05-17 18:49:181863검색

SpringBoot 프로젝트에서 MyBatis를 지속성 계층 프레임워크로 사용하는 경우 자동 주입을 사용할 때 매퍼가 널 포인터 예외를 보고하는 문제가 발생할 수 있습니다. 이는 SpringBoot가 자동 주입 중에 MyBatis의 Mapper 인터페이스를 올바르게 식별할 수 없고 몇 가지 추가 구성이 필요하기 때문입니다.
이 문제를 해결하는 방법에는 두 가지가 있습니다.

1. Mapper 인터페이스에 주석을 추가합니다.
@Mapper 주석을 Mapper 인터페이스에 추가하여 이 인터페이스가 Mapper 인터페이스이고 프록시되어야 함을 SpringBoot에 알립니다. 예는 다음과 같습니다.

@Mapper
public interface UserMapper {
    // ...
}

2. Mapper 스캔 경로를 수동으로 구성합니다.
application.properties 또는 application.yml에서 Mapper 스캔 경로를 수동으로 구성하여 SpringBoot가 어떤 패키지 아래에 있는 Mapper 인터페이스를 스캔하도록 지시합니다. 예제는 다음과 같습니다.
application.properties에서 구성:

mybatis.mapper-locations=classpath:mapper/*.xml

application.yml에서 구성:

mybatis:
  mapper-locations: classpath:mapper/*.xml

여기서 mapper/*.xml은 Mapper 인터페이스에 해당하는 XML 파일이 있는 경로를 나타냅니다. 주석을 사용하여 SQL 문을 구성하는 경우 XML 파일 경로를 구성할 필요가 없습니다.
위 두 가지 방법으로 구성한 후 자동 주입 사용 시 Mapper 인터페이스를 올바르게 주입할 수 있습니다.

마지막으로, 위의 모든 작업을 수행했지만 여전히 빈 결과가 나오면 컨트롤러 레이어에 실수로 매퍼를 삽입하지 않았는지 확인하세요. 예를 들어

idea springBoot 프로젝트에 자동으로 주입되는 빈 매퍼 문제를 해결하는 방법

새 객체인 경우 참조된 주입된 객체는 스프링에 자동으로 주입되지 않습니다. 컨테이너의 객체는 비어 있는 것으로 보고되며 전체 장면은 컨트롤러 레이어에서 @Autowird 주입을 사용해야 합니다

위 내용은 idea springBoot 프로젝트에 자동으로 주입되는 빈 매퍼 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제