2017-07-18 4 views
1

私はSpring 4を使用して簡単なWebサービスを実装しようとしていますが、私のuserServiceは機能していないようです。このように私のメモリ内のHSQLDBのための持続性の設定でSpringのデータレストレポジトリが見つかりません

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 
    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class<?>[]{ PersistenceConfig.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class<?>[]{ 
     }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[]{"/api/*"}; 
    } 
} 

は、私はこのような構成を有している

@Configuration 
@ComponentScan("example.userService") 
@PropertySource("classpath:hibernate.properties") 
@EnableJpaRepositories("example.userService.repo") 
public class PersistenceConfig { 

    @Autowired 
    Environment env; 

    @Bean 
    LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
     /* ... */ 
     return entityManagerFactoryBean; 
    } 

    @Bean 
    public DataSource dataSource() { 
     return new EmbeddedDatabaseBuilder() 
       .setType(EmbeddedDatabaseType.HSQL) 
       .addScript("classpath:db/data.sql") 
       .build(); 
    } 
} 

私は、エンティティUserを持っています。そして、ここに私のリポジトリです:

@Repository 
@RepositoryRestResource 
public interface UserRepo extends CrudRepository<User, Long> { 
    List<User> findAll(); 
    List<User> findByFirstName(@Param("firstName") String firstName); 
} 

そして私はまた、このサービスを実行するには、ポート9999上の埋め込み桟橋naを持っています。

桟橋が起動して、localhost:9999/api/users/または/user/1またはそのようなsmthに行くと、エラー404が発生します。 findByFirstNameメソッドも機能しません。

サーブレット・ディスパッチャーは公開されているリポジトリについて知らないので、これが起こると思います。しかし、私はまた、コントローラを使用したくないので、それを '登録'する方法も知らない。

私は春のドキュメントherehereと別のチュートリアルを読んでいるが、それらのほとんどは、任意のコンフィグを提供し、は単純にを作業リポジトリを記述しないでください。

コンソールとコンパイル時に何も表示されないので、何ができるのでしょうか?この問題の原因は何ですか?

ありがとうございます!

UPD 1:私はそれ以来、それのサービス部分を除去することにより、単純化された質問をしました : 私はAccessing JPA Data with RESTに応じUesrRepo@RepositoryRestResourceを追加しましたが、/api/usersはまだ404

UPD 2であります@ Antoniossssのコメントに従ってコントローラが必要です。それは単純ではありません:リポジトリを公開するためにどの設定を使用する必要がありますか?

+0

/usersまたは/ users/1エンドポイントを実装しているコントローラーが表示されません。 – chomnoue

+0

@chomnoueリポジトリ名が公開されていませんか?私はUserRepositoryが '/ users'または'/user/'に公開されるべきであることを意味します(しかし、それらをまっすぐ公開するのはベストプラクティスではありません)。私はコントローラとサービスなしでそれらを使用したいと思います。それは不可能ですか? –

+0

レポジトリを残りのリソースとして公開する場合は、@RepositoryRestResourceが必要です。 https://spring.io/guides/gs/accessing-data-rest/ – chomnoue

答えて

0

Spring data rest configurationが見つかりませんでした。MVC設定のみがあります。 RepositoryRestConfigurer Beanを設定に追加するか、RepositoryRestConfigurerAdapterを拡張する必要があります。