我正在使用Wildfly V16在Openshift Online(v3)环境中运行Java(1.8)+ Spring(4.1.3)应用程序。
应用程序有一个带有@Service批注的类(GiftcardWebService.java),其方法主要是通过@Transactional批注进行的:
控制器类:
@Controller
@RequestMapping(value = "/BusinessController/")
public BusinessController {
...
@Autowired
private GiftcardWebService service;
...
}
GiftcardWebService.java
@Service
public GiftcardWebService {
....
@Transactional
public Map<String, String> getGiftcardForm (....) {
....
}
...
}
在部署到Wildfly v15或v16期间,发生错误:
Could not generate CGLIB subclass of class [class com.liquibil.controllers.GiftcardWebService]: Common causes of this problem include using a final class or a non-visible class.
有趣的是,此相同的代码适用于Wildfly 10至14。只有将其部署到Wildfly v15或v16时,它才会失败(带有上述错误)。
我用Google搜索了这个问题,找到了一些讨论,但主要是针对CGLIB需要默认类构造函数的Springframework Version 3。我的Spring版本是4.1.3。
我还删除了唯一的“最终”变量(在记录器上),但没有帮助。我不知道在这种情况下什么才算是不可见的课程。
我还删除了GiftcardWebService.java中的所有@Transactional批注,然后错误消失了(它确认该错误是由于@Transactional引起的)