我有一个春天的学习者。我正在尝试使用spring data jpa构建一个应用程序。
我创建了类似下面的课程。
package com.myclass.projecttracker.main;
@Service
public class myDao {
@Autowired
TrackerCrudRepo trackerCrudRepo;
public TrackerCrudRepo myclass(){
return trackerCrudRepo;
}
}
我的spring启动应用程序主类如下所示。
package com.mindtree.projecttracker.main;
@RestController
@EnableAutoConfiguration
@ComponentScan(basePackages = {"com.myclass.projecttracker.main"})
public class Parser2 {
ResourceDetailExtractor resourceDetailExtractor = new ResourceDetailExtractor();
public static void main(String[] arg) throws IOException{
SpringApplication.run(Parser2.class, arg);
}
@RequestMapping("/")
void home() throws IOException {
//custom implimentation
myDao MyDao = new myDao();
TrackerCrudRepo trackerCrudRepo = MyDao.myclass();
}
package com.myclass.projecttracker.model;
@Repository("myRepo")
public interface TrackerCrudRepo extends CrudRepository<ResourceData, Long> {
}
当你运行这个应用程序时,它会抛出错误
申请失败
说明
com.myclass.projecttracker.main.myDao中的字段trackerCrudRepo需要一个类型为&#39; com.myclass.projecttracker.model.TrackerCrudRepo&#39;的bean。无法找到。
动作:
考虑定义类型为&#39; com.myclass.projecttracker.model.TrackerCrudRepo&#39;的bean。在你的配置中。
任何人都可以帮我确定解决这种情况的方法
答案 0 :(得分:2)
TrackerCrudRepo
位于包com.myclass.projecttracker.model
内,但您已声明@ComponentScan(basePackages = {"com.myclass.projecttracker.main"})
来扫描您的组件。
因此,您需要将TrackerCrudRepo
移至包com.myclass.projecttracker.main
或将@ComponentScan(basePackages = {"com.myclass.projecttracker.main"})
更改为@ComponentScan(basePackages = {"com.myclass.projecttracker"})
答案 1 :(得分:1)
myDao用@service注释,所以spring会照顾它的创作
你应该删除
myDao MyDao = new myDao();
在Parser2类中,用@Autowired注释标记它,spring会照顾
它在Parser2类中的实例化
@Autowired
myDao MyDao