当我把" @Transactional(readOnly=false)
"我的Service类中的注释我收到以下错误
说明
豆子学生服务'无法注入 '
com.student.service.StudentServiceImpl
'因为它是一个JDK动态 实现的代理:com.student.service.StudentService
示例代码:
@Service("studentService")
@Transactional(readOnly=false)
public class StudentServiceImpl implements StudentService {
}
public interface StudentService {
}
动作:
考虑通过在
proxyTargetClass=true
和/或@EnableAsync
上设置@EnableCaching
来将bean注入其接口之一或强制使用基于CGLib的代理。使用退出代码1完成处理
造成这种情况的原因是什么?
答案 0 :(得分:16)
在spring boot项目中,尝试添加:
spring.aop.proxy-target-class=true
到你的application.properties
或强>
@EnableAspectJAutoProxy(proxyTargetClass = true)
到春季启动入口点。
答案 1 :(得分:14)
正如SO已在评论中提到的那样,当您尝试注入/自动装配实现类而不是接口时会发生错误。
bean'studentService'无法注入 'com.student.service.StudentServiceImpl'因为它是一个JDK动态 实现的代理:com.student.service.StudentService
在SO发布的设置中,
public class StudentServiceImpl implements StudentService {
}
public interface StudentService {
}
如果您按如下所示自动连接界面,则不会出现错误:
@Autowired //or @Inject
StudentService studentService;
答案 2 :(得分:0)
在您的应用程序类文件中添加以下内容:
@SpringBootApplication
@EnableCaching(proxyTargetClass = true)
答案 3 :(得分:0)
我遇到了类似的问题,并以this的方式解决了