我有以下3个模块在我的Spring启动应用程序:
@springbootplication
我现在正试图在web
模块中注入一个来自服务
的服务。在这个服务中,我注入了来自持久性
模块的存储库。启动应用程序时,会出现以下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.project.service.images.ImageService required a bean of type 'com.project.persistence.repositories.ImageRepository' that could not be found.
Action:
Consider defining a bean of type 'com.project.persistence.repositories.ImageRepository' in your configuration.
ImageService类:
package com.project.service.images;
import com.project.common.entities.Image;
import com.project.persistence.repositories.ImageRepository;
import com.project.service.AbstractService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.persistence.EntityNotFoundException;
import java.util.Date;
import java.util.List;
@Component
public class ImageService extends AbstractService {
private final ImageRepository imageRepository;
@Autowired
public ImageService(ImageRepository imageRepository) {
this.imageRepository = imageRepository;
}
public Image getImage(Long id) {
return imageRepository.findById(id).orElseThrow(EntityNotFoundException::new);
}
public List<Image> getAll() {
return imageRepository.findAll();
}
public List<Image> getAll(Date from) {
return imageRepository.findByDateRange(from, null);
}
public List<Image> getAll(Date from, Date to) {
return imageRepository.findByDateRange(from, to);
}
public List<Image> getAllForDay(Date day) {
return imageRepository.findAll();
}
}
ImageRepository
class:
package com.project.persistence.repositories;
import com.project.common.entities.Image;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository
public interface ImageRepository extends JpaRepository<Image, Long> {
@Query("SELECT i FROM Image i WHERE i.created > :from AND i.created < :to")
public List<Image> findByDateRange(@Param("from") Date from, @Param("to") Date to);
}
这就是我在web
模块中将服务注入到我的类中的方式:
@Autowired
private ImageService imageService;
所以我在网上搜索,看到一些人有类似的问题。然后我得到了一个提示,我应该在我的应用程序类中将scanBasePackages添加到SpringBootApplication注释中。所以我做了这个:
package com.project.web;
@SpringBootApplication(scanBasePackages = "com.project.service")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
但它仍然不起作用。如果我将特定的扫描包添加到注释com。项目服务images
注入ImageService
是可行的,但是它在其中找不到imagesrepository
。
我做错了什么?
我知道这么多模块对于这么小的应用程序来说没有意义,但我必须这么做,因为这是为了我的学徒期,我们需要制作多个模块。
Spring无法扫描存储库类,因为它位于不同的包中。
根据你在评论中的回复,你的应用程序类在下面
通用域名格式。项目网状物
,因此默认情况下,Spring将扫描此包和子包下的所有类。因此,您需要将所有spring组件放在应用程序所在的同一个包/子包下。
试着把scanBasePackages改成“com.project”。存储库位于另一个包中。
如:
@SpringBootApplication(scanBasePackages="com.project")
通常应该做的是在应用程序中使用这种结构
app
SpringBootApp.java
app.repositories
Repository.java
app.services
Service.java
如果您没有遵循该包结构,那么您需要
@EnableJpaRepositories
并注意可能存在相同问题的实体,在这种情况下,请查看:
@EntityScan
问题内容: 我有一个和一个。 我想用的。 当我通过注射添加时: 我得到这个嵌套错误: [嵌套] 11592-2018-8-13 11:42:17 [ExceptionHandler] Nest无法解析PlayersService(+,?)的依赖项。请确保索引[1]的参数在当前上下文中可用。 这两个模块均导入。两种服务都在其模块中单独工作。 问题答案: 你要 导出 的是它提供的模块: 然后将导出 模
问题内容: 我有一个单独模块的工厂,我想将其注入模块的提供程序中,但是却不断收到未知的提供程序错误。我究竟做错了什么? 我想注入的是: 我试图注入的地方: 导致 问题答案: 我认为是因为所有提供程序都在工厂之前实例化,因此提供程序仅需依赖其他提供程序。 作为一种解决方法,我正在使用创建模块的方法。一个可以完成您想完成的任务的插件:http ://plnkr.co/edit/g1M7BIKJkjSx
问题内容: 假设我有一个名为的软件包,其中包含: 和: 然后我执行以下脚本: 这是我的期望: 这是我得到的: 谁能解释我的误解? 问题答案: 您正在使用。在导入模块的全局范围(或发生import语句的任何范围)中成为符号。 当您为指定新值时,您也只是在更改哪些值点,而不是实际值。尝试直接使用in导入,并通过设置在那里进行实验。这样,您实际上将在此上下文中修改哪个是“实际”值。 它有点令人费解,
如图,我将framework中的ResponseResult引入到blog中,然后在maven install命令下报错。 blog依赖了framework。是不是因为我两个模块的java下的包名一样导致的,如果是的话,该怎么改呢?
我正在写一个应用程序使用Node.js.具体来说,我使用节点v10.3.0。此应用程序位于位于。此应用程序有一个package.json文件位于。这个应用程序引用了一个在中定义的类。需要注意的是表示自己的包。这个包是在中定义的。index.js代码如下: 当我尝试运行此操作时,会出现以下错误: 我的进口声明有什么问题?在我看来这是正确的。我是不是误解了什么? 项目js 谢谢