> Java > java지도 시간 > 본문

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

WBOY
풀어 주다: 2023-05-17 18:49:18
앞으로
1824명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿