【发布时间】:2017-10-25 18:37:53
【问题描述】:
您好,我在第一个 maven 项目中有两个 maven 项目(不是模块)我有一个 data-jpa 存储库
用户存储库
package com.massoudafrashteh.code.spring.boot.dans.repository;
public interface UserRepository extends JpaRepository<User, Long> {}
用户服务实现
@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();
}
}
但是 Boot 找不到我的存储库并说
考虑定义一个 bean 类型 'com.massoudafrashteh.code.spring.boot.dans.repository.UserRepository' 在你的配置中
在两个项目中都使用了“spring-boot-starter-data-jpa 1.5.3.RELEASE”。我认为问题在于我有一个用于 UserServiceImpl 的@Bean,而 spring 在运行时找不到 Data JPA 的实现!
更新1: 当我将两者都作为 Maven 模块进行测试时,它们可以工作!但它们不能作为 jar 文件工作!
更新 2: 没有其他配置,我只是使用了Spring-Boot管理数据库的HSQLDB。
Update3: 我应该使用引导项目作为依赖项。请看一下这两个项目,spring-rest-test 是可执行项目,https://gitlab.com/massoud.afrashteh/spring-boot-template。谢谢
【问题讨论】:
-
你能显示你的 application.properties 或 yml 文件吗?
-
两个项目中都没有application.properties
-
您是否尝试过让存储库在第一个 maven 项目中工作?或者如果你在第二个maven项目中声明一个repository并尝试使用它,它是否有效?
-
OK 然后启动在双方都能正常工作,但无法加载另一个项目的东西!
-
我刚刚尝试在模块之间的多模块项目中自动装配存储库。这与使用另一个 jar 中的存储库基本相同。我认为您的组件扫描还有其他问题。你能再做一次检查吗?你能在包“com.massoudafrashteh.code.spring.boot.dans.repository”中定义一个带有@Component注解的示例bean,看看你是否能够在UserServiceImpl中自动装配它?
标签: java spring maven spring-boot spring-data-jpa