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>