私は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
メソッドも機能しません。
サーブレット・ディスパッチャーは公開されているリポジトリについて知らないので、これが起こると思います。しかし、私はまた、コントローラを使用したくないので、それを '登録'する方法も知らない。
私は春のドキュメントhere、hereと別のチュートリアルを読んでいるが、それらのほとんどは、任意のコンフィグを提供し、は単純にを作業リポジトリを記述しないでください。
コンソールとコンパイル時に何も表示されないので、何ができるのでしょうか?この問題の原因は何ですか?
ありがとうございます!
UPD 1:私はそれ以来、それのサービス部分を除去することにより、単純化された質問をしました : 私はAccessing JPA Data with RESTに応じUesrRepo
に@RepositoryRestResource
を追加しましたが、/api/users
はまだ404
UPD 2であります@ Antoniossssのコメントに従ってコントローラが必要です。それは単純ではありません:リポジトリを公開するためにどの設定を使用する必要がありますか?
/usersまたは/ users/1エンドポイントを実装しているコントローラーが表示されません。 – chomnoue
@chomnoueリポジトリ名が公開されていませんか?私はUserRepositoryが '/ users'または'/user/'に公開されるべきであることを意味します(しかし、それらをまっすぐ公開するのはベストプラクティスではありません)。私はコントローラとサービスなしでそれらを使用したいと思います。それは不可能ですか? –
レポジトリを残りのリソースとして公開する場合は、@RepositoryRestResourceが必要です。 https://spring.io/guides/gs/accessing-data-rest/ – chomnoue