2017-07-13 7 views
1

JAX-RSで始まったばかりなので、質問があり長引いています。クラスではなくメソッドでパスを指定できますか?私はそれを実行しようとしているが、それは動作しません。 @Pathのドキュメントからクラスレベルではなくメソッドレベルの基本Jax-RS PATHコンフィグレーション

@Component 
@Transactional 
public class ImageResource { 

    @GET 
    @Path("/images") 
    public List<Image> getAll(){ 
     return this.imageDao.findAll(); 
    } 
} 

答えて

2

@Path("/images") 
@Component 
@Transactional 
public class ImageResource { 


    @GET 
    public List<Image> getAll(){ 
     return this.imageDao.findAll(); 
    } 
} 

が、それはこのようなものを持つことが可能です

は、リソースクラスまたはクラスメソッドが の要求にサービスを提供しますURIのパスを指定します。

https://docs.oracle.com/javaee/7/api/javax/ws/rs/Path.html

だから、クラスやメソッドに注釈を付けることができますが、クラスの注釈をスキップすることはできません。

1)あなたのコントローラクラスに@Transactionalのアノテーションを持っている:

@Path("/") 
@Component 
@Transactional 
public class ImageResource { 

    @GET 
    @Path("/images") 
    public List<Image> getAll(){ 
     return this.imageDao.findAll(); 
    } 
} 

はまた、それはあなたがいることを私に奇妙なようだ:私は使用してあなたをお勧めします。私はそれがimageDaoに置かれるべきだと信じています。さらに、すべてのメソッドがトランザクションを必要としていることを確認してください。いいえ - この注釈を必要なメソッドにだけ配置します。

2)コントローラクラスは「ImageResource」と呼ばれます。 * Controllerのようなクラスを呼び出す方が良いでしょう。あなたの場合ImageController。

+0

これらのヒントをいただきありがとうございます。私はそれで始まったので、多くの慣習を知らない。私も完全に理解していない私のコードに物事を入れているという罪を犯しています。 – orange14

関連する問題