我在春天使用spring hateoas并且遇到问题是spring不能实例hateoas资源汇编程序,这是我的代码片段:
UserHateoasResourceAssembler.java:
@Service
public class UserHateoasResourceAssembler extends ResourceAssemblerSupport<UserDTO, UserHateoasResource> {
public UserHateoasResourceAssembler() {
super(UserController.class, UserHateoasResource.class);
}
@Override
public UserHateoasResource toResource(UserDTO entity) {
UserHateoasResource resource = createResourceWithId(entity.getId(), entity);
return resource;
}
@Override
protected UserHateoasResource instantiateResource(UserDTO entity) {
return new UserHateoasResource(entity);
}
}
UserController.java:
@RestController
@RequestMapping("/api/")
public class UserController {
@Inject
private UserHateoasResourceAssembler userAssembler ;
....
}
抛出的异常是&#34;没有找到类型[UserHateoasResourceAssembler]的限定bean用于依赖。我知道这个根本原因是无法创建汇编程序的实例。
我尝试使用@Service或@Component,但两者都不起作用。我也尝试使用@Autowire,但也没有用。我必须通过添加@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)来解决这个问题。但我想知道是否还有其他解决办法来解决它而不是使用@Scope?
感谢。
答案 0 :(得分:0)
我找到了优雅的解决方案。由于我的应用程序使用生成的代码并且它使用了@EnableAspectJAutoProxy,这个注释默认设置auto-proxy = false并使用JDK代理,因此几乎不允许实现接口的类实例。我们必须@inject接口。因此要注入实现类,请在此处有两个选项:
设置@EnableAspectJAutoProxy(proxyTargetClass = true)
如果我们真的不需要,请删除此注释。