我正在寻找有关如何在Spring Boot应用程序中配置Spring Data JDBC的信息(Gradle示例将是理想的)。
我读过the docs,我知道我需要为每个域类(或域类的“聚合”)定义一个Repository
实现,例如:
interface UserRepository extends CrudRepository<User, Long> {
// custom query methods
long countByLastname(String lastname);
}
但是,还不完全清楚需要添加哪些依赖项,如何将存储库bean注入其他bean,如何指定Spring可以在哪里找到存储库bean等等。
我特别想看看如何定义一个管理多个表/域类的存储库。例如,一个管理Order
及其OrderItem
s集合的持久性的存储库。 the docs中的示例仅显示如何将单个域类映射到存储库。
由于您使用Spring Boot开发应用程序,因此可以使用入门Spring模块。在特定情况下,依赖性将是
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
如果您配置了Gradle Spring插件,则会自动拾取模块版本
id 'org.springframework.boot' version '2.1.2.RELEASE' // Your version
当您创建自定义Repository
接口时,您只需要使用类注释@Repository
对它们进行注释。 Spring-autoconfigured扫描机制将自动拾取它们(记得将它们放在子包中,将@SpringBootApplication
注释类作为root)。
然后,您可以使用希望构造函数注入来@Autowire
您的服务器中的存储库,或任何您想要的。
@Autowired
MyClass(final MyRepository repository) { ... }
请注意,如果您有一个构造函数,则无需指定@Autowired
批注。
顺便说一下,Data JDBC是一个非常新的项目。有一些限制,但我想你已经在Data JDBC文档中找到了它们。
需要添加哪些依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
如何将存储库bean注入其他bean
在您的控制器或服务或任何其他bean中,您可以自动装配此存储库: -
private final UserRepository userRepository;
@Autowired
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
如何指定Spring可以找到存储库bean的位置
Spring Boot将自动扫描包含@SpringBootApplication
定义的主类的包(和子包)。
另外,使用@Repository
注释您的界面: -
@Repository
interface UserRepository extends CrudRepository<User, Long> {