之前我们的文章 java boot将一组yml配置信息装配在一个对象中
讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类
但 这建立在 bean是自己定义的 如果 这是个第三方的类呢?
就比如 我们在 application 中写了一套数据源的加载规则 但需要用第三方的bean加载 该怎么做呢?
下面 我来定义一个第三方bean试试
大家用任何第三方工具类都可以
这里 我用 druid 会简单一些
先注入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
然后我们找一个类 引入DruidDataSource
import com.alibaba.druid.pool.DruidDataSource;
然后我们这样 输出一下
DruidDataSource ds = new DruidDataSource();
System.out.println(ds);
它里面输出了一定的内容
其实 给其他第三方类赋值 我们直接用里面的set方法 和我们自己写的都是一样的
这里 我们将代码改成这样
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("java.kou");
System.out.println(ds.getDriverClassName());
这里 我们先set改了里面的 DriverClassName
然后 get输出
也是没有任何问题
因为我们现在不用自己创建的这个对象连数据库 所以 你把这个对象怎么改都是OK的
那么 知道了 可以用第三方类的set改属性 明白了这个 就简单很多了
我们在application 中定义一下这个DriverClassName属性
然后 我们在测试类中这样写
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
运行结果如下
可以看到 和我们写在配置文件中的内容是一模一样的