配置数据源的三个步骤是什么 win7配置odbc数据源

1.概观Spring Boot使用自以为是的算法来扫描和配置数据源。这使得我们很容易在默认情况下获得完全配置的数据源实现。此外,Spring Boot将根据类路径上的顺序,自动配置一个快如

本文最后更新时间:  2023-04-19 17:48:55

1.概观

Spring Boot使用自以为是的算法来扫描和配置数据源。这使得我们很容易在默认情况下获得完全配置的数据源实现。

此外,Spring Boot将根据类路径上的顺序,自动配置一个快如闪电的连接池、HikariCP、Apache Tomcat或Commons DBCP。

虽然Spring Boot的自动DataSource配置在大多数情况下运行良好,但有时我们需要更高级别的控制,所以我们必须设置自己的DataSource实现,所以我们跳过自动配置过程。

在本教程中,我们将学习

如何在Spring Boot中以编程方式配置

数据源

2.Maven依赖性

一般来说,通过编程创建

数据源

是非常简单的。

为了理解如何实现这一点,我们将实现一个简单的存储库层,它将在一些JPA实体上执行CRUD操作。

让我们来看看我们的演示项目的依赖项:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>2.4.1</version> <scope>runtime</scope> </dependency>

如上所示,我们将使用内存中的H2数据库实例来练习存储库层。通过这样做,我们将能够测试我们以编程方式配置的数据源,而不必执行昂贵的数据库操作。

另外,让我们确保在Maven Central上查看最新版本的
spring-boot-starter-data-JPA。

3.以编程方式配置数据源

现在,如果我们坚持Spring Boot的自动数据源配置,并在当前状态下运行我们的项目,它将按预期工作。

Spring Boot将为我们完成所有的重型基础设施管道。这包括创建一个H2数据源实现,它将由HikariCP、Apache Tomcat或Commons DBCP自动处理,并设置一个内存中的数据库实例。

此外,我们甚至不需要创建application.properties文件,因为Spring Boot也会提供一些默认的数据库设置。

正如我们之前提到的,有时我们需要更高级别的定制,所以我们必须以编程方式配置我们自己的数据源实现。

实现这一点最简单的方法是定义一个数据源工厂方法,并将其放在一个@配置注释中。

@Configurationpublic class DataSourceConfig { @Bean public DataSource getDataSource() { DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); dataSourceBuilder.driverClassName("org.h2.Driver"); dataSourceBuilder.url("jdbc:h2:mem:test"); dataSourceBuilder.username("SA"); dataSourceBuilder.password(""); return dataSourceBuilder.build(); }}

在这种情况下,我们使用方便的数据源构建器类,是约书亚·布洛赫构建器模式的非平滑版本,以编程方式创建我们的自定义。

这种方法非常好,因为构建器可以很容易地用一些公共属性配置数据源。它还使用底层连接池。

4.使用application.properties文件外部化数据源配置。

当然,我们也可以部分外部化我们的数据源配置。例如,我们可以在工厂方法中定义一些基本的数据源属性:

@Bean public DataSource getDataSource() { DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); dataSourceBuilder.username("SA"); dataSourceBuilder.password(""); return dataSourceBuilder.build(); }

然后,我们可以在application.properties文件中指定一些额外的属性:

spring.datasource.url=jdbc:h2:mem:testspring.datasource.driver-class-name=org.h2.Driver

在外部源中定义的属性,例如上面的

application . properties

文件,或者通过用

@ configuration properties

注释的类

显然,使用这种方法,我们将不再把数据源配置设置存储在一个地方。

另一方面,它允许我们将编译时和运行时配置设置彼此分开。

这真的很好,因为它允许我们轻松地设置配置绑定点。这样,我们可以包含来自其他来源的不同数据源设置,而无需重构bean factory方法。

5.测试数据源配置。

测试我们的定制数据源配置非常简单。整个过程可以归结为创建JPA实体、定义基本的存储库接口和测试存储库层。

5.1.创建JPA实体

让我们从定义示例JPA实体类开始,它将为用户建模:

@Entity@Table(name = "users")public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String name; private String email; // standard constructors / setters / getters / toString }

5.2.简单的存储库层

接下来,我们需要实现一个基本的存储库层,它允许我们对上面定义的用户实体类的实例执行CRUD操作。

因为我们使用的是Spring Data JPA,所以我们不必从头开始创建自己的DAO实现。我们只需要扩展CrudRepository接口来获得有效的存储库实现:

@Repositorypublic interface UserRepository extends CrudRepository<User, Long> {}

5.3.测试存储库层

最后,我们需要检查我们以编程方式配置的数据源是否在实际工作。我们可以通过集成测试轻松实现这一点:

@RunWith(SpringRunner.class)@DataJpaTestpublic class UserRepositoryIntegrationTest { @Autowired private UserRepository userRepository; @Test public void whenCalledSave_thenCorrectNumberOfUsers() { userRepository.save(new User("Bob", "bob@domain.com")); List<User> users = (List<User>) userRepository.findAll(); assertThat(users.size()).isEqualTo(1); } }


userRepositoryIntegration测试类是不言自明的。它只是使用两个存储库接口的CRUD方法来持久化和查找实体。

请注意,我们是决定以编程方式配置我们的DataSource实现,还是将其拆分为Java配置方法和application . properties。

5.4.运行示例应用程序

最后,我们可以使用标准的main()方法来运行我们的演示应用程序:

@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public CommandLineRunner run(UserRepository userRepository) throws Exception { return (String[] args) -> { User user1 = new User("John", "john@domain.com"); User user2 = new User("Julie", "julie@domain.com"); userRepository.save(user1); userRepository.save(user2); userRepository.findAll().forEach(user -> System.out.println(user); }; }}

我们已经测试了存储库层,因此我们确信我们的数据源已经成功配置。因此,如果我们运行示例应用程序,我们应该在控制台输出中看到存储在数据库中的用户实体列表。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。