2017-05-25 61 views
2

您好我在第一个Maven项目中的两个Maven项目(非模块)我有一个数据,JPA库春天开机不能启用JPA库JAR文件

UserRepository

package com.massoudafrashteh.code.spring.boot.dans.repository; 
public interface UserRepository extends JpaRepository<User, Long> {} 

UserServiceImpl

@Service 
public class UserServiceImpl implements UserService { 
    @Autowired 
    private UserRepository userRepository; 
} 

然后将这个项目导出到一个jar并附加到另一个启动应用程序,我有这样的配置在

@Configuration 
@EnableAutoConfiguration 
@ComponentScan(basePackages = "com") 
@EntityScan(basePackages ="com.massoudafrashteh.code.spring.boot.dans.domain") 
@EnableJpaRepositories("com.massoudafrashteh.code.spring.boot.dans.repository") 
public class Config { 
    @Bean 
    public UserService userService() { 
     return new UserServiceImpl(); 
    } 
}  

但引导找不到我的仓库,说

考虑您的配置

定义 型“com.massoudafrashteh.code.spring.boot.dans.repository.UserRepository” 的豆

在两个项目中都使用了“spring-boot-starter-data-jpa 1.5.3.RELEASE”。我认为问题是我有一个用于UserServiceImpl的@Bean,并且Spring在运行时无法找到Data JPA的实现!

UPDATE1: 当我测试既作为Maven的模块,他们的工作!但它们不能用作jar文件!

UPDATE2: 没有其他的配置,我只是用HSQLDB其中弹簧引导管理DB。

UPDATE3:随着我应该使用启动项目作为dependeny。请看看这两个项目,spring-rest-test是可执行项目https://gitlab.com/massoud.afrashteh/spring-boot-template。谢谢

+0

你可以显示你的application.properties或yml文件吗? –

+0

这两个项目中都没有application.properties –

+0

您是否尝试在第一个maven项目中使存储库工作?或者,如果你在第二个maven项目中声明一个存储库并尝试使用它,它是否工作? – yaswanth

回答

0

你的UserServiceImpl类已经用@Service注解定义,它也有一些自动装配的依赖bean。

为什么不自动将您的UserServiceImpl装入需要的类中,而不是自己创建一个新实例,并在方法上使用@Bean配置为一个bean。

+0

因为Spring不能对它进行处理,所以如果你检查了我的最新更新,并且春季文档说我们没有模块时就不能使用启动应用程序作为依赖。 http://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#howto-create-an-additional-executable-jar –

+0

不能使用启动应用程序作为依赖,但在你的情况下,UserServiceImpl不是一个启动应用程序,它是一个简单的jar文件,正如你所提到的,任何启动应用程序/任何spring项目都可以使用它,如果它在类路径中的话。另外,当您创建UserServiceImpl的新实例时,其相关类不会通过自动注入来注入。 – kswaughs

+0

好吧,请克隆我的代码并检查他们,你会得到我的错误。谢谢 –