跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • springboot,有个自动配置的问题
未分類
22 4 月 2020

springboot,有个自动配置的问题

springboot,有个自动配置的问题

資深大佬 : luxinfl 10

@Bean @ConfigurationProperties(prefix = “ds2”) public DataSource dataSource(){ return DataSourceBuilder.create().build(); }

———–properties 文件————– ds2.jdbcUrl=xxx ds2.username=111 ds2.password=222 ds2.driverClassName=com.mysql.cj.jdbc.Driver

为什么生成数据源的时候,没有自动把配置文件的参数带进去啊?是我哪里设置错了么?

大佬有話說 (18)

  • 主 資深大佬 : luxinfl

    @Bean
    @ConfigurationProperties(prefix = “spring.datasource.hikari”)
    public DataSource dataSource(){
    return DataSourceBuilder.create().build();
    }

  • 主 資深大佬 : luxinfl

    ds2.jdbcUrl=
    ds2.username=feb-dev
    ds2.password=feb-dev
    ds2.driverClassName=com.mysql.cj.jdbc.Driver

  • 主 資深大佬 : luxinfl

    @ConfigurationProperties(prefix = “ds2”) 注解是这个、。。

  • 資深大佬 : wangyanrui

    Binding is either performed by calling setters on the annotated class or, if {@link ConstructorBinding @ConstructorBinding} is in use, by binding to the constructor parameters.
    来自于 源码里备注的一部分

    你的 datasource 里面,有 ds2 这个属性吗?

  • 主 資深大佬 : luxinfl

    @wangyanrui 那如果要绑定 hikari 的参数,那应该怎么写?

  • 資深大佬 : liyanggyang

    大哥,首先 启动类需要 @EnableConfigurationProperties;其次自动注解是解析 @Bean 的入参类;最后,也是根据成员变量的 setter ( DataSourceBuilder 的 username 这些,不是 DataSourceBuilder 的成员变量);

    ——-我觉得可以这样—-
    1. 启动类
    @EnableConfigurationProperties({
    DataProperties.class,
    })
    2. 配置类:
    @Setter
    @Getter
    @AllArgsConstructor
    @NoArgsConstructor
    @Builder
    @ConfigurationProperties(prefix = “ds2”)
    public class DataProperties {
    private String username;
    。。。
    }
    3. 注册 bean
    @Bean
    public DataSource dataSource(DataProperties dataProperties){
    return DataSourceBuilder.create().username(dataProperties.getUserName).build(); }

  • 資深大佬 : Resource

    DataSourceProperties 有 jdbcUrl 这个属性吗,我咋记得是 url

  • 主 資深大佬 : luxinfl

    @liyanggyang 我觉的 setter 应该不需要,因为这样写我可以获取到配置信息
    @Configuration
    @PropertySource(value= “classpath:application-ds.yml”,factory = PropertySourceConfig.class)
    @EnableConfigurationProperties
    public class TransactionConfig {

    @Bean
    @ConfigurationProperties(prefix = “ds2”)
    public DataSource dataSource() {
    return DataSourceBuilder.create().build();
    }

    }

  • 主 資深大佬 : luxinfl

    @Resource hikari 的 url 变量不太一样

  • 主 資深大佬 : luxinfl

    @wangyanrui ds2 前面加了 prefix,只是配置的前缀

  • 資深大佬 : wangyanrui

    没有明白主到底要表达的是什么意思(手动沟通)

  • 資深大佬 : wangyanrui

    没有明白主到底要表达的是什么意思(手动狗头)

  • 資深大佬 : wangyanrui

    感觉主可能对 SpringBoot 的自动配置的原理不太明白,云里雾里的
    建议先了解一些基本概念
    说错了勿锤

  • 主 資深大佬 : luxinfl

    @wangyanrui 是不太懂,但是为啥我换了个写法就能读取到了呢?

    @Configuration
    @PropertySource(value= “classpath:application-ds.yml”,factory = PropertySourceConfig.class)
    @EnableConfigurationProperties
    public class TransactionConfig {

    @Bean
    @ConfigurationProperties(prefix = “ds2”)
    public DataSource dataSource() {
    return DataSourceBuilder.create().build();
    }

    }

  • 資深大佬 : chendy

    DataSource 不吃这些配置,应该返回 DataSourceProperties 或者 HIkari 的配置类,配置参数才能加上去
    然后再注入给相关的 bean

  • 主 資深大佬 : luxinfl

    @chendy 我还是看看配置是怎么加载的吧。。。

  • 資深大佬 : Jrue0011

    自己测了下,单数据源用你主贴的写法没什么问题,可能是多数据源结合自动配置后的问题

  • 主 資深大佬 : luxinfl

    我又试了下。 @ConfigurationProperties 可以直接读到 application.properties 或者 application.yml 配置文件。但是如果数据源配置写在自定义文件的时候,要么用 @PropertySource 读取自定义配置文件,要么在主配置文件配置 spring.profiles.include..谢谢大佬们提供意见
    @Jrue0011
    @liyanggyang
    @wangyanrui

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具