iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Springboot中数据访问如何配置
  • 776
分享到

Springboot中数据访问如何配置

2023-06-22 06:06:39 776人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关SpringBoot中数据访问如何配置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。自定义数据源配置@Bean @ConfigurationProperties(prefix=

这篇文章给大家分享的是有关SpringBoot中数据访问如何配置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

自定义数据源配置

@Bean @ConfigurationProperties(prefix="app.datasource") public DataSource dataSource() {   return new FancyDataSource(); }

配置文件

app:   datasource:     url: "jdbc:h3:mem:mydb"     username: "sa"     passWord: "123123"     pool-size: 30

FancyDataSource类具有相应的url,username,pool-size属性。

Spring Boot还提供了一个名为DataSourceBuilder的实用工具生成器类,可用于创建一个标准数据源(如果它位于类路径上)。构建器可以根据类路径上的可用内容检测要使用的类。它还根据JDBCURL自动检测驱动程序。

@Bean @ConfigurationProperties("app.datasource") public DataSource dataSource() {   return DataSourceBuilder.create().build(); }

然而,有一个陷阱。因为连接池的实际类型没有提供,所以在自定义数据源的元数据中没有生成任何键,并且IDE中没有可用的完成(因为数据源接口不公开任何属性)。此外,如果类路径上碰巧有Hikari,则此基本设置不起作用,因为Hikari没有url属性(但有jdbcUrl属性)。在这种情况下,你必须按如下方式重写配置:

app:   datasource:     jdbc-url: "jdbc:mysql://localhost/test"     username: "dbuser"     password: "dbpass"     pool-size: 30

可以强制指定数据源类型

@Bean @ConfigurationProperties("app.datasource") public HikariDataSource dataSource() {   return DataSourceBuilder.create().type(HikariDataSource.class).build(); }

多数据源配置

如果需要配置多个数据源,可以应用上一节中描述的相同技巧。但是,你必须将其中一个数据源实例标记为@Primary,因为将来的各种自动配置都希望能够按类型获得一个。

如果您创建自己的数据源,自动配置将退出。在以下示例中,我们提供了与主数据源上的自动配置完全相同的功能集:

@Bean @Primary @ConfigurationProperties("app.datasource.first") public DataSourceProperties firstDataSourceProperties() {   return new DataSourceProperties(); }  @Bean @Primary @ConfigurationProperties("app.datasource.first.configuration") public HikariDataSource firstDataSource() {   return firstDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build(); }  @Bean @ConfigurationProperties("app.datasource.second") public BasicDataSource secondDataSource() {   return DataSourceBuilder.create().type(BasicDataSource.class).build(); }

这两个数据源还绑定了高级定制。例如,您可以按如下方式配置它们:

app:   datasource:     first:       url: "jdbc:Mysql://localhost/first"       username: "dbuser"       password: "dbpass"       configuration:         maximum-pool-size: 30     second:       url: "jdbc:mysql://localhost/second"       username: "dbuser"       password: "dbpass"       max-total: 30

你也可以将相同的概念应用于辅助数据源,如以下示例所示:

@Bean @Primary @ConfigurationProperties("app.datasource.first") public DataSourceProperties firstDataSourceProperties() {   return new DataSourceProperties(); }  @Bean @Primary @ConfigurationProperties("app.datasource.first.configuration") public HikariDataSource firstDataSource() {   return firstDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build(); }  @Bean @ConfigurationProperties("app.datasource.second") public DataSourceProperties secondDataSourceProperties() {   return new DataSourceProperties(); }  @Bean @ConfigurationProperties("app.datasource.second.configuration") public BasicDataSource secondDataSource() {   return secondDataSourceProperties().initializeDataSourceBuilder().type(BasicDataSource.class).build(); }

使用spring Data Repositories

Spring data 可以创建各种风格的@Repository接口的实现。只要这些@Repositories包含在@EnableAutoConfiguration类的同一个包(或子包)中,Spring Boot就可以为您处理所有这些。

对于许多应用程序,只需将正确的Spring Data依赖项放在类路径上。

spring-boot-starter-data-jpa for JPA, spring-boot-starter-data-mongodb for mongoDB,等等。要开始,请创建一些存储库接口来处理@Entity对象。

Spring Boot根据找到的@EnableAutoConfiguration,尝试猜测@Repository定义的位置。要获得更多控制,请使用@EnableJpaRepositories注释。

将@Entity定义与Spring配置分开

Spring Boot试图根据它找到的@EnableAutoConfiguration猜测@Entity定义的位置。要获得更多控制,可以使用@EntityScan注释,如下例所示:

@Configuration(proxyBeanMethods = false) @EnableAutoConfiguration @EntityScan(basePackageClasses=City.class) public class Application {   //... }

配置JPA属性

Spring Data JPA已经提供了一些独立于供应商的配置选项(如sql日志记录选项),SpringBoot将这些选项和Hibernate的一些选项公开为外部配置属性。其中一些是根据上下文自动检测的,因此您不必设置它们。

spring.jpa.hibernate.ddl-auto是一种特殊情况,因为根据运行时条件,它有不同的默认值。如果使用嵌入式数据库,并且没有模式管理器(如Liquibase或Flyway)处理数据源,则默认情况下为create-drop。在所有其他情况下,它默认为none。

要使用的方言由JPA提供程序检测。如果您喜欢自己设置方言,请设置

spring.jpa.database-platfORM属性。

spring:   jpa:     hibernate:       naming:         physical-strategy: "com.example.MyPhysicalNamingStrategy"     show-sql: true

配置Hibernate命名策略

Hibernate使用两种不同的命名策略将名称从对象模型映射到相应的数据库名称。可以通过设置

spring.jpa.hibernate.naming.physical-strategy属性,属性值为类的全限定名,package + clalss。

默认情况下,Spring Boot使用

SpringPhysicalNamingStrategy配置物理命名策略。此实现提供了与Hibernate4相同的表结构:所有点都替换为下划线,驼峰大小写也替换为下划线。此外,默认情况下,所有表名都以小写形式生成。例如,电话号码实体映射到电话号码表。如果您的模式需要混合大小写标识符,请定义自定义SpringPhysicalNamingStrategybean,如以下示例所示:

@Bean SpringPhysicalNamingStrategy caseSensitivePhysicalNamingStrategy() {   return new SpringPhysicalNamingStrategy() {     @Override     protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) {       return false;     }  }; }

如果您更喜欢使用Hibernate 5的默认设置,请设置以下属性:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

或者,您可以配置以下bean

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

配置Hibernat二级缓存

Hibernate二级缓存可以为一系列缓存提供程序进行配置。与其将Hibernate配置为再次查找缓存提供程序,不如尽可能提供上下文中可用的缓存提供程序。

要使用JCache实现这一点,首先要确保

org.hibernate.HibernateJCache在类路径上可用。然后,添加HibernatePropertiesCustomizer bean,如以下示例所示:

@Configuration(proxyBeanMethods = false) public class HibernateSecondLevelCacheExample {   @Bean   public HibernatePropertiesCustomizer hibernateSecondLevelCacheCustomizer(JCacheCacheManager cacheManager) {     return (properties) -> properties.put(ConfigSettings.CACHE_MANAGER, cacheManager.getCacheManager());     } }

使用多个EntityManagerFactories

如果需要对多个数据源使用JPA,那么每个数据源可能需要一个EntityManagerFactory。Spring ORM中的

LocalContainerEntityManagerFactoryBean允许您根据需要配置EntityManagerFactory。您还可以重用JPA属性来绑定每个EntityManagerFactory的设置,如以下示例所示:

@Bean @ConfigurationProperties("app.jpa.first") public JpaProperties firstJpaProperties() {   return new JpaProperties(); }  @Bean public LocalContainerEntityManagerFactoryBean firstEntityManagerFactory(DataSource firstDataSource, JpaProperties firstJpaProperties) {   EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(firstJpaProperties);   return builder.dataSource(firstDataSource).packages(Order.class).persistenceUnit("firstDs").build(); }  private EntityManagerFactoryBuilder createEntityManagerFactoryBuilder(JpaProperties jpaProperties) {   JpaVendorAdapter jpaVendorAdapter = createJpaVendorAdapter(jpaProperties);   return new EntityManagerFactoryBuilder(jpaVendorAdapter, jpaProperties.getProperties(), null); }  private JpaVendorAdapter createJpaVendorAdapter(JpaProperties jpaProperties) {   // Map JPA properties as needed   return new HibernateJpaVendorAdapter(); }

上面的示例使用名为firstDataSource的数据源bean创建EntityManagerFactory。它扫描与订单位于同一包中的实体。可以使用该应用程序映射其他JPA属性。

将Spring数据存储库公开为REST端点

Spring Data Rest可以将 Repository 实现公开为REST端点,前提是已经为应用程序启用了 springMVC

Spring Boot暴露了一组有用的属性(来自Spring.data.rest命名空间),用于自定义

RepositoryRestConfiguration。如果需要提供额外的定制,那么应该使用RepositoryRestConfiguration。

使用

<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency>   <groupId>org.springframework.data</groupId>   <artifactId>spring-data-rest-WEBmvc</artifactId> </dependency>

感谢各位的阅读!关于“Springboot中数据访问如何配置”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Springboot中数据访问如何配置

本文链接: https://www.lsjlt.com/news/303136.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot中数据访问如何配置
    这篇文章给大家分享的是有关Springboot中数据访问如何配置的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。自定义数据源配置@Bean @ConfigurationProperties(prefix=...
    99+
    2023-06-22
  • springboot中如何配置多数据源
    这期内容当中小编将会给大家带来有关springboot中如何配置多数据源,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、建库建表1.1 创建数据库db1和数据库db21.2 在数据库db1中创建表db1...
    99+
    2023-06-15
  • springboot数据源如何配置
    Spring Boot提供了多种配置数据源的方式,可以根据具体的需求选择适合的配置方式。1. 使用默认配置:Spring Boot默...
    99+
    2023-10-09
    springboot
  • SpringBoot如何配置数据库
    0 写在前面 项目启动需要一个链接数据库,所以在此记录一下。 根据配置文件的后缀书写格式略有不同。 此处以MySQL为例,使用Maven为例 1 引入依赖 mysql ...
    99+
    2023-08-16
    数据库 spring boot mysql
  • springboot如何配置多数据源
    在Spring Boot中配置多数据源可以通过创建多个DataSource bean,并使用@Primary和@Qualifier注...
    99+
    2024-04-08
    springboot
  • SpringBoot如何解决配置SwaggerUI访问404错误的问题
    这篇文章将为大家详细讲解有关SpringBoot如何解决配置SwaggerUI访问404错误的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SpringBoot 配置SwaggerUI 访问404的小...
    99+
    2023-05-30
    springboot swaggerui 404
  • 深入了解Springboot核心知识点之数据访问配置
    目录自定义数据源配置多数据源配置使用SpringDataRepositories将@Entity定义与Spring配置分开配置JPA属性配置Hibernate命名策略配置Hibern...
    99+
    2024-04-02
  • 如何进行springboot配置templates直接访问的实现
    这篇文章给大家介绍如何进行springboot配置templates直接访问的实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。springboot配置templates直接访问springboot下的template...
    99+
    2023-06-22
  • SpringBoot如何访问html和js等静态资源配置
    目录SpringBoot访问html和js等静态资源配置1:访问html2:访问jsSpringBoot访问不到js,css等静态资源问题SpringBoot访问html和js等静态...
    99+
    2024-04-02
  • SpringBoot如何使用JdbcTemplate访问操作数据库
    这篇文章给大家分享的是有关SpringBoot如何使用JdbcTemplate访问操作数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Spring对数据库的操作在jdbc上s面做了深层次的封装,使用sprin...
    99+
    2023-06-29
  • SpringBoot使用MySQL访问数据
    目录   SpringBoot使用MySQL访问数据   SpringBoot使用MySQL访问数据       本文章向大家介绍SpringBoot使用MySQL访问数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,...
    99+
    2023-10-22
    spring boot mysql 后端
  • springboot 如何配置多个jndi数据源
    springboot 配置多个jndi数据源 1.在application.properties中,添加jndi配置 如下图 2.新建dataSourceConfig类 3.d...
    99+
    2024-04-02
  • redis如何配置外网访问
    redis配置外网访问的方法:打开redis目录下的redis.conf 文件。找到:bind 127.0.0.1protected-mode yes更改为:# bind 127.0.0.1protected-mode no...
    99+
    2024-04-02
  • 内存数据库如何在springboot中进行配置
    内存数据库如何在springboot中进行配置?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.springboot的Maven工程结构2. 首先引入依赖jar包 pom.xm...
    99+
    2023-05-31
    springboot 内存数据库
  • springboot中如何利用mybatis-plus配置多数据源
    这篇文章主要介绍“springboot中如何利用mybatis-plus配置多数据源”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot中如何利用mybatis-plus配置多数据源”...
    99+
    2023-06-08
  • springboot配置templates直接访问的实现
    目录springboot配置templates直接访问配置公有访问方式如下springboot的templates用法在controller中添加视图springboot配置temp...
    99+
    2024-04-02
  • springboot中怎么配置数据源
    在Spring Boot中配置数据源有以下几种方式:1. 使用默认的数据源配置:Spring Boot提供了默认的数据源配置,只需要...
    99+
    2023-10-27
    springboot
  • 使用 SpringBoot 访问 MySQL 数据库
    一、目标 创建一个 MySQL 数据库,构建一个 Spring 应用程序,并将其连接到新创建的数据库。 二、准备工作 最喜欢的文本编辑器或 IDE Java 17或更高版本 Gradle 7.5+或Maven 3.5+ 三、初始化项目 导...
    99+
    2023-08-17
    数据库 mysql spring boot
  • SpringBoot使用druid配置多数据源问题
    目录一、背景二、版本介绍三、项目结构四、maven依赖 五、yaml配置文件六、数据源配置文件七、启动类配置八、druid管理页面总结一、背景 使用spring boot配...
    99+
    2023-03-11
    SpringBoot配置多数据源 druid配置多数据源 druid多数据源
  • 如何配置mariadb远程访问权限解决数据库乱码问题
    这篇文章主要介绍如何配置mariadb远程访问权限解决数据库乱码问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!配置mariadb远程访问权限:1)登录数据库:# mys...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作