Java 如何在BeanforSpringMVC中添加jpa存储库?

Java 如何在BeanforSpringMVC中添加jpa存储库?,java,spring,spring-boot,spring-mvc,javabeans,Java,Spring,Spring Boot,Spring Mvc,Javabeans,我正在使用springmvc创建一个API,在集成controller、service和Repository方面,我面临的问题很少。我已将控制器与服务集成,但在将服务与存储库集成时面临一些问题 下面是代码和bean配置文件: <bean id="clientController" class="com.practo.hms.api.clients.ClientController"> <property n

我正在使用
springmvc
创建一个API,在集成
controller
service
Repository
方面,我面临的问题很少。我已将控制器与服务集成,但在将服务与存储库集成时面临一些问题

下面是代码和bean配置文件:

        <bean id="clientController" class="com.practo.hms.api.clients.ClientController">
        <property name="clientService" value="clientService"/>
        </bean>
        <bean id="clientService" class="com.practo.hms.api.clients.ClientService">
        </bean>
控制器:

@Validated
@RestController
@RequestMapping("/api/clients")
public class ClientController {



    private ClientService clientService;
    @Autowired
    public void setClientService(ClientService clientService) {
        this.clientService = clientService;
    }
}
服务类别:

@Service
public class ClientService {


    private ClientRepository clientRepository;

    @Autowired
    public void setClientRepository(ClientRepository clientRepository) {
        this.clientRepository = clientRepository;
    }
}
存储库接口:

@Repository
public interface ClientRepository extends JpaRepository<ClientModel, String> {

}

根据Spring数据文档:

1.2.3创建存储库实例

在本节中,您将为 已定义存储库接口。一种方法是使用弹簧 每个支持的Spring数据模块附带的命名空间 尽管我们通常建议使用 Java配置样式配置。XML配置


每个Spring数据模块都包含一个repositories元素,该元素允许 您只需定义Spring为您扫描的基本包


在前面的示例中,指示Spring进行扫描 com.acme.repositories及其接口扩展的所有子包 存储库或其子接口之一。对于找到的每个接口 基础设施注册特定于持久性技术的 FactoryBean创建处理调用的适当代理 查询方法的定义。每个bean都以一个 是从接口名派生的,因此是UserRepository的接口 将在userRepository下注册。基本包属性 允许使用通配符,以便您可以定义扫描模式 包裹

因此,请添加

并确保xml中的名称空间具有spring-jpa.xsd和jpa

================已编辑===============

要添加多个包,请执行以下操作: 例如:


每个Spring数据模块都包含一个repository元素,允许您简单地定义Spring为您扫描的基本包。您可以在中添加存储库包


您可以从spring.io了解更多信息


如果我在不同的包中有多个存储库怎么办?@HimanshuRanjan在Spring Data将扫描的特定包下创建子包。com.hello.repositories。com.hello.repositories.subpackageAyea,但是我可以把多个存储库放在一个基础上吗?@HimanshuRanjan更新了答案谢谢你的回答,对bean和JPA的工作原理有了一些了解。
 Error creating bean with name 'clientService': Unsatisfied dependency expressed through  
 field 'clientRepository'; nested exception is  
 org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type  
 'com.practo.hms.api.clients.ClientRepository' available: expected at least 1 bean which  
 qualifies as autowire candidate. Dependency annotations:  
 {@org.springframework.beans.factory.annotation.Autowired(required=true)}
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.springframework.org/schema/data/jpa"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/data/jpa
    http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

  <repositories base-package="com.acme.repositories" />

</beans:beans>
<repositories base-package="org.apache.fineract.commands.domain" />
<repositories base-package="org.apache.fineract.infrastructure.*.domain" />
<repositories base-package="org.apache.fineract.accounting.*.domain" />
<repositories base-package="org.apache.fineract.useradministration.domain" />
<repositories base-package="org.apache.fineract.organisation.*.domain" />
<repositories base-package="org.apache.fineract.portfolio.*" />
<repositories base-package="org.apache.fineract.mix.domain" />
<repositories base-package="org.apache.fineract.scheduledjobs.domain" />
<repositories base-package="org.apache.fineract.template.domain" />
<repositories base-package="org.apache.fineract.infrastructure.campaigns.sms.domain" />
<repositories base-package="org.apache.fineract.adhocquery.domain" />
<repositories base-package="org.apache.fineract.notification.domain"/>
<repositories base-package="org.apache.fineract.infrastructure.campaigns.email.domain"/>
<repositories base-package="org.cs.commands.domain" />
<repositories base-package="org.cs.infrastructure.*.domain" />
<repositories base-package="org.cs.portfolio.*" />
<repositories base-package="org.cs.message.*" />
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.springframework.org/schema/data/jpa"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/data/jpa
    http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

  <repositories base-package="com.practo.hms.api.clients.repositories" />

</beans:beans>