【发布时间】:2018-05-22 15:45:21
【问题描述】:
我正在尝试将存储库自动装配到从控制器调用的服务中,但我不断收到以下错误消息:
Error creating bean with name 'mktPlace2PedidoService' defined in VFS resource [\"/home/davidgarcia/wildfly-11.0.0.Final/standalone/deployments/issuer.war/WEB-INF/classes/br/com/sinergico/service/mktplace2/MktPlace2PedidoService.class\"]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.sinergico.repository.mktplace2.MktPlace2PedidoRepository]: No qualifying bean of type [br.com.sinergico.repository.mktplace2.MktPlace2PedidoRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.sinergico.repository.mktplace2.MktPlace2PedidoRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
奇怪的是,我有许多其他存储库以完全相同的方式使用,但没有给出这个问题......
这是我在 Service 构造函数中对存储库的调用
package br.com.sinergico.service.mktplace2;
@Service
public class MktPlace2PedidoService extends GenericService<MktPlace2Pedido, Long> {
private MktPlace2PedidoRepository repository;
@Autowired
public MktPlace2PedidoService(MktPlace2PedidoRepository repository) {
super(repository);
this.repository = repository;
}
//other methods
}
这是存储库
package br.com.sinergico.repository.mktplace2;
public interface MktPlace2PedidoRepository extends JpaRepository<MktPlace2Pedido, Long> {
//some methods
}
这是Entity声明
package br.com.entity.mktplace2;
@Entity
@Table(name="pedido", schema = "marketplace")
@SequenceGenerator(name="hibernate_sequence", sequenceName="marketplace.hibernate_sequence",initialValue=1, allocationSize=1)
public class MktPlace2Pedido implements Serializable{
private static final long serialVersionUID = 45381343130121532L;
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "hibernate_sequence")
private Long id;
//other columns
}
我尝试将@Repository 注释包含到存储库中,但它没有做任何事情。
有人可以帮忙吗?我已经花了几个小时来解决这个问题......
编辑 - 解决方案
感谢 davidxxx,问题得以解决。我错过了@EnableJpaRepositories 中的包,现在它看起来像这样:
@EnableJpaRepositories(basePackages = { ... ,"br.com.sinergico.repository.mktplace2", ... })
【问题讨论】:
-
您的存储库与您的服务在同一个 jar 中?你的配置类是什么样的?
-
确保您的
repository在同一个基础包中 -
存储库与我的服务在同一个 jar 中。它也在同一个基础包中。我会将包添加到问题文本中。我们在这里没有使用配置 xml 类,所以我不太确定它的外观。我会调查的
-
只是一个猜测:您声明/启用
@EnableJpaRepositories的basePackages不是br.com.sinergico.repository.mktplace2包的父包。 -
哇!很好的猜测,@davidxxx !就是这样。非常感谢!!发表您的评论作为答案,我会将其标记为解决问题的评论。我不能在评论中这样做
标签: java spring service dependency-injection repository