2015-12-21 96 views
4

我必須使用Spring框架在Java中創建一個Rest API,當我使用IntelliJ運行它時,一切正常並且沒有錯誤。但是,當我創建一個jar文件並執行它,我的項目不工作了,因爲這個錯誤的:Spring BeanCreationException注入自動裝載依賴關係失敗

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'newsController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private eu.epitech.jungeryazdi.repository.NewsRepository eu.epitech.jungeryazdi.controller.NewsController.repository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [eu.epitech.jungeryazdi.repository.NewsRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
at ... 
... 17 common frames omitted 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [eu.epitech.jungeryazdi.repository.NewsRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[jweb.jar:na] 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[jweb.jar:na] 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[jweb.jar:na] 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[jweb.jar:na] 
... 19 common frames omitted 

因此,這裏有我的文件: Application.java

@SpringBootApplication 
public class JwebApplication { 

public static void main(String[] args) { 
    SpringApplication.run(JwebApplication.class, args); 
} 

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); 
    return factory; 
    } 
} 

NewsRepository的.java

@Repository 
public interface NewsRepository extends CrudRepository<News, Long> { 

Iterable<News> findByTitle(@Param("title") String title); 

} 

NewsCont roller.java

@RestController 
@RequestMapping("/news") 
public class NewsController { 

@Autowired(required = true) 
private NewsRepository repository; 

@Autowired(required = true) 
private UserRepository user_repository; 

@RequestMapping(value = "", method = RequestMethod.GET) 
public HttpEntity getNews(@RequestParam(value = "id", defaultValue = "-1") long id, 
          @RequestParam(value = "title", defaultValue = "") String title) { 

    ... 
} 

@RequestMapping(value = "", method = RequestMethod.POST) 
public HttpEntity sendNewsToSubscribers(@RequestParam(value = "title") String title, 
             @RequestParam(value = "message") String message, 
             @RequestParam(value = "token") String token) { 

    ... 
    } 

} 

News.java

@Entity 
@Table(name = "NEWS") 
public class News { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private long id; 

@Column(name = "TITLE") 
private String title; 

@Column(name = "MESSAGE") 
private String message; 

@Column(name = "DATE") 
private Date date; 

public News(String ti, String mess) { 
    title = ti; 
    message = mess; 
    date = new Date(); 
} 

public News() { } 

... 

} 
+0

我在Spring並不專業,但我在想,是否將所有必需的類文件包含在jar中?因爲錯誤說「NoSuchBeanDefinitionException:找不到符合條件的[eu.epitech.jungeryazdi.repository.NewsRepository]類型的合格bean」 –

+0

您可以共享您的代碼的NewsRepository實現。 –

+0

@Mohit我沒有實現NewsRepository,我擴展了CrudRepository,它提供了我需要的方法。 – Max

回答

0

我做一個小東西解決了這個問題,我沒有的IntelliJ但與Maven使用生成的.jar:

mvn package 
相關問題