트랜잭션 주석 오류
내가 "를 넣을 때.@Transactional(readOnly=false)
내 서비스 클래스의 주석 다음 오류가 발생합니다.
설명:
빈 '학생 서비스'를 '로 주입할 수 없습니다.
com.student.service.StudentServiceImpl
com.student.service를 구현하는 JDK 동적 프록시이기 때문입니다.학생 서비스
샘플 코드:
@Service("studentService")
@Transactional(readOnly=false)
public class StudentServiceImpl implements StudentService {
}
public interface StudentService {
}
작업:
빈을 인터페이스 중 하나로 주입하거나 설정을 통해 CGLib 기반 프록시 사용을 강제하는 것을 고려합니다.
proxyTargetClass=true
에@EnableAsync
및/또는@EnableCaching
.프로세스가 종료 코드 1로 종료되었습니다.
무엇이 원인입니까?
SO가 코멘트에서 이미 언급했듯이, 인터페이스 대신 구현 클래스를 주입/자동 배선하려고 할 때 오류가 발생합니다.
빈 'studentService'를 'com.student.service'로 주입할 수 없습니다.com.student.service를 구현하는 JDK 동적 프록시이므로 'StudentServiceImpl'입니다.학생 서비스
SO가 게시한 설정에서
public class StudentServiceImpl implements StudentService {
}
public interface StudentService {
}
아래와 같이 인터페이스를 자동 배선하면 오류가 발생하지 않습니다.
@Autowired //or @Inject
StudentService studentService;
스프링 부트 프로젝트에서 다음을 추가합니다.
spring.aop.proxy-target-class=true
application.properties로 이동합니다.
OR
@EnableAspectJAutoProxy(proxyTargetClass = true)
스프링 부트 진입점으로 이동합니다.
응용 프로그램 클래스 파일에 다음을 추가합니다.
@SpringBootApplication
@EnableCaching(proxyTargetClass = true)
저도 비슷한 문제가 있었고 이런 식으로 해결했습니다.
언급URL : https://stackoverflow.com/questions/39483059/transactional-annotation-error
'programing' 카테고리의 다른 글
변수가 PD인지 테스트하는 방법.NaT? (0) | 2023.07.26 |
---|---|
JavaScript null 검사입니다. (0) | 2023.07.26 |
현재 세션에서 Oracle 트리거를 사용하지 않도록 설정할 수 있습니까? (0) | 2023.07.21 |
관계형 데이터베이스에서 성능 문제를 어떻게 설명합니까? (0) | 2023.07.21 |
레이블로 선택한 판다는 때때로 Series를 반환하고 DataFrame을 반환합니다. (0) | 2023.07.21 |