2016-03-28 6 views
4

spring-mvcプロジェクトでスプリングデータ休憩を設定しようとしていますが、私のリポジトリ情報のjsonにアクセスするためのURLを入力するたびにリターン404それはここですべての単純なスプリングデータ休止プロジェクトで404エラーを取得

で私の春・データ・休息注釈/依存関係を見ていないように見える私のpom.xmlが

<groupId>com.konan</groupId> 
<artifactId>libsupport</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>LibSupport</name> 
<description>Library Support System</description> 

<properties> 
    <org.springframework.version>4.2.0.RELEASE</org.springframework.version> 
</properties> 

<dependencies> 

    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>1.8.2.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-rest-webmvc</artifactId> 
     <version>2.4.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.hateoas</groupId> 
     <artifactId>spring-hateoas</artifactId> 
     <version>0.17.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.10.Final</version> 
    </dependency> 


    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.10.Final</version> 
    </dependency> 

    <!-- Logger --> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.6</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.6.1</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <path>/lib-support</path> 
       <contextReloadable>true</contextReloadable> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

あるリポジトリ:

@RepositoryRestResource(path = "books", collectionResourceRel = "books") 
public interface BookRepository extends JpaRepository<Book, Integer> { 

} 

そして、設定クラス:

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

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

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

@Configuration 
@EnableTransactionManagement 
@EnableJpaRepositories(basePackageClasses = BookRepository.class) 
@PropertySource("classpath:app.properties") 
public class JPAConfig { 

    @Autowired 
    private Environment environment; 

    @Bean 
    public DataSource dataSource() { 
     DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); 
     driverManagerDataSource.setDriverClassName(environment.getProperty("jdbc.driverClassName")); 
     driverManagerDataSource.setUrl(environment.getProperty("jdbc.url")); 
     driverManagerDataSource.setUsername(environment.getProperty("jdbc.user")); 
     driverManagerDataSource.setPassword(environment.getProperty("jdbc.pass")); 
     return driverManagerDataSource; 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
     LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); 
     localContainerEntityManagerFactoryBean.setPersistenceUnitName("localContainerEntityManagerFactoryBean"); 

     localContainerEntityManagerFactoryBean.setDataSource(dataSource()); 
     localContainerEntityManagerFactoryBean.setPackagesToScan(environment.getProperty("entities.scan")); 

     JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
     localContainerEntityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter); 
     localContainerEntityManagerFactoryBean.setJpaPropertyMap(hibernateProperties()); 

     return localContainerEntityManagerFactoryBean; 
    } 


    @Bean 
    public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { 
     return new JpaTransactionManager(entityManagerFactory); 
    } 


    private Map<String, String> hibernateProperties() { 
     Map<String, String> hibernateProperties = new HashMap<>(); 
     hibernateProperties.put("hibernate.hbm2ddl.auto", environment.getProperty("hb.hbm2ddl.auto")); 
     hibernateProperties.put("hibernate.dialect", environment.getProperty("hb.dialect")); 
     hibernateProperties.put("hibernate.show_sql", environment.getProperty("hb.show_sql")); 
     hibernateProperties.put("hibernate.format_sql", environment.getProperty("hb.format_sql")); 
     hibernateProperties.put("hibernate.enable_lazy_load_no_trans", environment.getProperty("hb.enable_lazy_load_no_trans")); 
     return hibernateProperties; 
    } 
} 

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackageClasses = {BookController.class, BookService.class}) 
public class WebConfig extends WebMvcConfigurerAdapter { 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
} 
} 

は、だから私は、次のURLを入力して "http://localhost:8080/lib-support/books" and have this.

誰も助けてもらえますか?前もって感謝します。

+0

WebConfigに@EnableJpaRepositoriesがありません。 – Milan

+0

1.設定はパッケージに基づいていますか?またはクラス名? 2. JPAリポジトリ3を有効にします。なぜ、リクエストURLに 'lib-support'が必要ですか? 4. Web.xmlはベースURLを構成していますか?パッケージ 2)に基づいて – VinayVeluri

+0

@VinayVeluri 1)Configがここで私はちょうど私がポンポンでそれを言及質問 '@EnableJpaRepositories(basePackageClasses = BookRepository.class)' 3)にアタッチする逃し、JpaConfigからこの注釈です。 /libにサポート の ' –

答えて

4

私は問題が何であるかを知りました。その結果、Springは相対エンティティに適切なリンクを生成できませんでした。例えば、私はBookエンティティを持っていて、OneToManyBookCopyエンティティクラスにマッピングされていますが、BookCopyRepositoryは存在しませんでした。

+0

質問が解決されたことを示すために答えを記入する必要があります – Desorder

関連する問題