Serviceクラスに「@Transactional(readOnly=false)
」アノテーションを追加すると、次のエラーが発生します
説明:
Bean 'studentService'は、次を実装するJDK動的プロキシであるため、 '
com.student.service.StudentServiceImpl
'として注入できませんでした。com.student.service.StudentService
サンプルコード:
@Service("studentService")
@Transactional(readOnly=false)
public class StudentServiceImpl implements StudentService {
}
public interface StudentService {
}
アクション:
proxyTargetClass=true
および/または@EnableAsync
に@EnableCaching
を設定して、Beanをそのインターフェースの1つとして挿入するか、CGLibベースのプロキシの使用を強制することを検討してください。プロセスは終了コード1で終了しました
これは何が原因ですか?
春のブートプロジェクトでは、追加してみてください:
spring.aop.proxy-target-class=true
あなたのapplication.propertiesに
[〜#〜]または[〜#〜]
@EnableAspectJAutoProxy(proxyTargetClass = true)
スプリングブートエントリポイントへ。
SOコメントで既に述べたように、インターフェイスの代わりに実装クラスを挿入/自動配線しようとするとエラーが発生します。
Bean 'studentService'は、com.student.service.StudentServiceを実装するJDK動的プロキシであるため、 'com.student.service.StudentServiceImpl'として注入できませんでした。
SOが投稿したセットアップで、
public class StudentServiceImpl implements StudentService {
}
public interface StudentService {
}
以下のようにインターフェースを自動配線した場合、エラーは発生しません。
@Autowired //or @Inject
StudentService studentService;