Jow*_*own 15 java jdbc spring-data spring-data-jpa spring-boot
我正在开发一个SpringBoot应用程序(例如MyApp),它依赖于两个具有不同实现的数据项目:
数据了jdbc.jar
spring-boot-starter-jdbcmy来构建公开我的应用程序将使用的JDBCDataService类示例代码:
@Service
public class JDBCDataServiceImpl implements JDBCDataService {
@Autowired
private JDBCDataRepository jdbcDataRepository;
...
}
Run Code Online (Sandbox Code Playgroud)
my.data.jdbcJDBCTemplate样本库:
@Repository
public class JDBCDataRepositoryImpl implements JDBCDataRepository {
@Autowired
protected JdbcTemplate jdbcTemplate;
...
}
Run Code Online (Sandbox Code Playgroud)
数据jpa.jar
spring-boot-starter-data-jpa也暴露了我的应用程序也将使用的JPADataService类示例代码:
@Service
public class JPADataServiceImpl implements JPADataService {
@Autowired
private JPADataRepository jpaDataRepository;
...
}
Run Code Online (Sandbox Code Playgroud)
my.data.jpaCrudRepository接口样本库:
@Repository
public interface JPADataRepository extends CrudRepository<MyObject, Integer{
...
}
Run Code Online (Sandbox Code Playgroud)
在我的SpringBoot项目中,我有以下SpringBoot主应用程序:
@SpringBootApplication
public class MyApp extends SpringBootServletInitializer {
}
Run Code Online (Sandbox Code Playgroud)
在我的业务服务MainService类中,我有以下注入
@Service
public class MainServiceImpl implements MainService {
@Autowired
private JDBCDataService jdbcDataService;
@Autowired
private JPADataService jpaDataService;
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了这个问题"Could not Autowire. No beans of 'JPADataService' type found",这个问题只适用于班级,JPADataService但是对于JDBCService班级来说工作正常.
我已经尝试过以下问题中找到的解决方案,但在我的情况下这些都不起作用:
我不能@Autowire存在于依赖的Library Jar中的Bean吗?
@ComponentScan(basePackages = {"org.example.main", "package.of.user.class"})
Run Code Online (Sandbox Code Playgroud)
我怎么能@Autowire一个从外部jar创建的spring bean?
@Configuration
@ComponentScan("com.package.where.my.class.is")
class Config {
...
}
Run Code Online (Sandbox Code Playgroud)
我现在找到了解决问题的方法.为了扫描我的数据库,我必须向上移动我的主要MyApp.java一个包级别.
而不是把我的MyApp.java下my.app包,我必须将它移到下my才能成功地扫描我的图书馆与my.data.jpa和my.data.jdbc包.
Jow*_*own 12
我现在找到了解决问题的方法.为了扫描我的数据库,我必须向上移动我的主要MyApp.java一个包级别.
而不是把我的MyApp.java下my.app包,我必须将它移到下my才能成功地扫描我的图书馆与my.data.jpa和my.data.jdbc包.
Chr*_*der 10
如果您尝试自动装配的类未使用@Component注释,则添加@ComponentScan将不起作用.为了使其工作,您必须在@Configuration类中注释一个方法.这样的事情应该允许你自动使用这个类:
@Configuration
public class ConfigClass{
@Bean
public JPADataService jpaDataService(){
return new JPADataService();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22448 次 |
| 最近记录: |