java springboot 通过ConfigurationProperties给第三方bean注入属性

之前我们的文章 java boot将一组yml配置信息装配在一个对象中

讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类

但 这建立在 bean是自己定义的 如果 这是个第三方的类呢?

就比如 我们在 application 中写了一套数据源的加载规则 但需要用第三方的bean加载 该怎么做呢?

下面 我来定义一个第三方bean试试

大家用任何第三方工具类都可以

这里 我用 druid 会简单一些

先注入依赖

xml 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

然后我们找一个类 引入DruidDataSource

java 复制代码
import com.alibaba.druid.pool.DruidDataSource;

然后我们这样 输出一下

java 复制代码
DruidDataSource ds = new DruidDataSource();
System.out.println(ds);

它里面输出了一定的内容

其实 给其他第三方类赋值 我们直接用里面的set方法 和我们自己写的都是一样的

这里 我们将代码改成这样

java 复制代码
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("java.kou");
System.out.println(ds.getDriverClassName());

这里 我们先set改了里面的 DriverClassName

然后 get输出

也是没有任何问题

因为我们现在不用自己创建的这个对象连数据库 所以 你把这个对象怎么改都是OK的

那么 知道了 可以用第三方类的set改属性 明白了这个 就简单很多了

我们在application 中定义一下这个DriverClassName属性

然后 我们在测试类中这样写

java 复制代码
package com.example.webdom;

import com.alibaba.druid.pool.DruidDataSource;
import com.example.webdom.controller.BookController;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class WebDomApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(WebDomApplication.class);
        DruidDataSource ds = ctx.getBean(DruidDataSource.class);
        System.out.println(ds.getDriverClassName());
        //SpringApplication.run(WebDomApplication.class, args);
    }
    @Bean
    @ConfigurationProperties("textdata")
    public DruidDataSource getDruidDataSource() {
        DruidDataSource ds = new DruidDataSource();
        return ds;
    }

}

这里 我们定义 getDruidDataSource 函数 用bean注解 返回一个DruidDataSource 的bean对象

然后通过ConfigurationProperties 指定 注入textdata属性给bean

然后 输出 getDriverClassName

运行结果如下

可以看到 和我们写在配置文件中的内容是一模一样的

相关推荐
java1234_小锋5 小时前
Java高频面试题:Redis的Key和Value的设计原则有哪些?
java·redis·面试
iPadiPhone6 小时前
流量洪峰下的数据守护者:InnoDB MVCC 全实现深度解析
java·数据库·mysql·面试
Nuopiane6 小时前
关于C#/Unity中单例的探讨
java·jvm·c#
win x6 小时前
JVM类加载及双亲委派模型
java·jvm
毕设源码-赖学姐6 小时前
【开题答辩全过程】以 滑雪场租赁管理系统的设计与实现为例,包含答辩的问题和答案
java
MediaTea6 小时前
Python:collections.Counter 常用函数及应用
开发语言·python
Javatutouhouduan6 小时前
SpringBoot整合reids:JSON序列化文件夹操作实录
java·数据库·redis·html·springboot·java编程·java程序员
wen__xvn6 小时前
模拟题刷题3
java·数据结构·算法
bug攻城狮6 小时前
Spring Boot应用内存占用分析与优化
java·jvm·spring boot·后端