【问题标题】:How can I get objects from property file in another classes?如何从其他类的属性文件中获取对象?
【发布时间】:2021-12-21 01:20:03
【问题描述】:

所以,我有 Java + Spring 类

@Service
@ConfigurationProperties(prefix = "spring.phone")
@Data
public class PhoneProps {
   private List<String> testNumber = new ArrayList<>();

   @Bean
    public void display() {
        System.out.println(testNumber);
    }
}

我将在另一个类中使用“显示”,但是当我调用它时,我得到一个空数组。但是 Bean 方法在这个 (PhoneProps) 类中可以正常工作。

示例: 当我打电话给PhoneProps 班级时(当工作时@Bean):

[998976460010, 998939378668]

当我在另一个类中调用“显示”时:

[]

如何在另一个文件中使用来自PhoneProps 的对象? 我使用 YAML 文件。

【问题讨论】:

  • 在你想要调用display的类中注入PhoneProps,你为什么在display方法上使用@Bean
  • 此外,您应该在 application.properties(或 yaml)中定义 spring.phone.test-number=998976460010,998939378668 属性
  • @NisargPatil,我在 yaml 文件中定义了这样的对象并注入到我想要调用的类中。 “@Bean”我用来确保它正常工作(显示结果)

标签: java spring yaml javabeans


【解决方案1】:

你有两个阶段。第一阶段,通过创建对象和第二阶段,@Bean 加载数据。如果创建@Bean,所有阶段都必须在其中。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 是的,你是对的。但是当我在另一个类中调用这个 Bean 方法时,它显示空数组
  • 显示空数组,因为首先启动@Bean
【解决方案2】:

尝试以下方法:

@Service
public class PhoneProps {

   @Value("${spring.phone}")
   private List<String> testNumber = new ArrayList<>();

   public void display() {
      System.out.println(testNumber);
   }
}

@Bean 注释从带注释方法的返回对象创建一个 bean,所以我猜你不想要那个。另外,使用@Value 注入属性。

现在您唯一需要做的就是将PhoneProps 注入另一个Spring 管理的Bean 并调用它的display() 方法。

【讨论】:

  • @UmaralikhonKayumov,这有帮助吗?如果有不清楚的地方请告诉我。
猜你喜欢
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 2017-03-22
  • 1970-01-01
相关资源
最近更新 更多