2016-04-16 11 views
0

を登録し、問題を持っていないことができインスタンスは資源アセンブラをHATEOASことができませんでしたバネである、ここに私のスニペットコードは次のとおりです。春、私は春に春のHATEOASを使用しています春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 ; 

    .... 


} 

例外がスローされたタイプの無修飾Beanは[UserHateoasResourceAssembler] depenは見つかりません」でありますdency。私はこの根本原因がアセンブラのインスタンスを作成できないことを知っています。

@Serviceまたは@Componentを使用しようとしましたが、どちらも機能しません。代わりに@Autowireを使用しようとしましたが、動作しませんでした。 @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)を追加して修正する必要があります。しかし、@Scopeの代わりにそれを解決する別の解決策があるのだろうか?

ありがとうございました。

答えて

0

私は洗練されたソリューションを見つけました。私のアプリケーションは生成されたコードを使用していて、@EnableAspectJAutoProxyを使用していました。この注釈のデフォルトはauto-proxy = falseを設定し、JDKプロキシを使用しているため、インタフェースを実装するクラスのインスタンスはほとんど許可されません。私たちは@injectインターフェイスを代わりにする必要があります。私たちは本当にそれを必要としない場合は、この注釈を削除

  1. セット@EnableAspectJAutoProxy(proxyTargetClass =真)

  2. :だからここに2つのオプションがあり、実装クラスを注入します。

関連する問題