当前位置: 首页 > 知识库问答 >
问题:

如何从application.yml正确获取spring.datasource.username

尚俊楠
2023-03-14

我一直在做一个springboot项目,其中需要使用application.yml进行配置

<code>应用程序。位于目录src/main/resources下的yml文件。

这是文件的内容:

spring:
  main:
    banner-mode: off
  application:
    name: XX
  datasource:
    username: admin
    password: 1234
    driverClassName: XXXX
    url: XXXX

在配置类中,我为每个字段都有变量。

@Component
@ConfigurationProperties
public class GlobalConfig {

    private String name;
    private String username;
    private String password;
    private String driverClassName;
    private String url;


    // getters&setters

这是跑步者文件:

@SpringBootApplication
@Configuration
@PropertySource("application.yml")
@EnableConfigurationProperties
public class Application implements CommandLineRunner {

    private GlobalConfig globalConfig;

    @Autowired
    public void setGlobalConfig(GlobalConfig globalConfig) {
        this.globalConfig = globalConfig;
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) {
        System.out.println(globalConfig);
    }

尽管应用程序用户名字段中的所有其他变量都是正确的,但其中包含一些与操作系统用户相关的内容。

应为toString-

Actualt toString-

PS:字母X并不意味着它为空。它们已经被填充了!

我已经检查了一些类似的问题,但没有这个案例的答案。

任何帮助都将不胜感激。提前谢谢。

共有1个答案

薛泰
2023-03-14

如果没有从yaml文件中填充数据,就不应该打印对象。

您可以使用“Setter”或“构造”注入。(您需要将所有数据填充到POJO,对吗?)

对于Ex (Setter注射)

@PropertySource("classpath:application.properties")
@Component
public class GlobalConfig {

 private String name;

    @Autowired
    public void setName(@Value("${user.name}") String name) {
        this.name=name;
    }
//getter
}

应用属性:-

user.name= 约翰逊

然后自动连接 GlobalConfig n print object System.out.println(globalConfig);

 类似资料:
  • 我发现其他人也有同样的问题,他们的问题通过在InputStreamReader构造函数中指定UTF-8来解决: 以UTF-8形式读取InputStream 这对我不起作用,我也不知道为什么。无论我尝试什么,我总是得到转义的unicode值(斜杠-U+十六进制),而不是实际的语言字符。我在这里做错了什么?提前道谢! 请注意:这不是字体问题。我之所以知道这一点,是因为如果我对同一个文件使用Resour

  • 这意味着我的配置类没有从yml文件中获得配置数据,所以请告诉我哪里做错了。P.S(但是服务器端口8003可以通过应用程序找到)。谢了!

  • 问题内容: 为了简单起见,假设我要创建一个简单的待办事项应用程序。我的xcdatamodel中有一个实体Todo,其属性为,和和以下swiftui视图(如图所示): 待办事项在获取时按日期排序,并显示在这样的列表中: 我想基于每个待办事项各自的日期将列表分组(样机): 据我了解,这可以与该函数中的Dictionary一起使用,但是我无法提出任何对远程有用的东西。有一种有效的数据分组方法吗? 问题答

  • 问题内容: 从Python标准库的组件中获取异常消息的最佳方法是什么? 我注意到在某些情况下,您可以通过如下字段获取它: 但在某些情况下(例如在套接字错误的情况下),您必须执行以下操作: 我想知道是否有标准方法可以涵盖大多数情况? 问题答案: 如果查看内置错误的文档,则会看到大多数类将其第一个参数分配为属性。并非所有人都这样做。 值得注意的是,(与子类和)具有的第一自变量,第二的。没有…大致类似于

  • 问题内容: 我有用于在Java中创建线程的此类 控制台显示以下文本作为输出 我的代码创建了新线程: 我的问题是:为什么返回正确的线程名却返回另一个? 问题答案: 为什么要返回正确的线程名称而又返回其他? 您的课程,但随后您通过调用以下内容开始: 这是不正确的。这意味着创建的线程实际是 不 一样的。 应该实现而 不是 扩展线程。您的代码可以工作,因为线程也是可运行的。 因为有两个线程对象,所以当您调

  • 问题内容: 说我有以下代码: 现在,如果抛出,我该如何捕捉?一种方法是提供自己的实现,并为其中的设置custom 。另一种方法是将其包装为包含try-catch -block 的本地(匿名)。也许还有其他类似的解决方法。但是…以某种方式感觉很脏,我觉得这不应该那么复杂。有没有干净的解决方案? 问题答案: 干净的解决方法是使用而不是。这将返回一个,您可以用来检索结果或任务异常: