0

我正在寻找有关如何在 Spring Boot 应用程序中配置 Spring Data JDBC 的信息(一个 Gradle 示例将是理想的)。

我已经阅读了文档,并且我知道我需要Repository为每个域类(或域类的“聚合”)定义一个实现,例如

interface UserRepository extends CrudRepository<User, Long> {

  // custom query methods
  long countByLastname(String lastname);
}

但并不完全清楚需要添加哪些依赖项,如何将存储库 bean 注入其他 bean,如何向 Spring 指定可以找到存储库 bean 的位置等。

我特别想看看如何定义一个管理多个表/域类的存储库。例如,一个管理 an 持久性的存储库,Order它是 s 的集合OrderItem文档中的示例仅显示如何将单个域类映射到存储库。

4

2 回答 2

2

由于您使用 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注释的类作为根)。

然后,您可以@Autowire使用构造函数注入将您的存储库放在服务中,或者您想要的任何东西。

@Autowired
MyClass(final MyRepository repository) { ... }

请注意,如果您有一个构造函数,则不需要指定@Autowired注释。

顺便说一句,Data JDBC 是一个相当新的项目。有一些限制,但我想您已经在 Data JDBC 文档中找到了这些限制。

于 2019-02-12T23:47:20.990 回答
1

需要添加哪些依赖

<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> {
于 2019-02-12T23:44:28.593 回答