【问题标题】:How to read Spring Boot application.properties?如何阅读 Spring Boot application.properties?
【发布时间】:2015-03-07 17:32:30
【问题描述】:

我刚刚阅读了有关外部配置的文档,发现我可以使用以下方法轻松访问 application.properties:

@Component
public class MyBean {

    @Value("${name}")
    private String name;

    // ...

}

但我想为类添加属性,它不是 Spring 组件(我使用 new 对其进行初始化)。

我想在这里应用它:

public class PageWrapper<T> {

private int maxButtonQuantity = **I want to put here the property from file**;
private Page<T> page;
private List<PageItem> buttons;
private int currentNumber;
private String url;
...
}

PageWrapper 不是 Spring Bean 类 - 它不是在 Spring 容器中“浮动”的。我在一些控制器中手动初始化它 - 使用 new 运算符

有什么方法可以简单地访问它,我不必使用容器?

【问题讨论】:

  • 您能否详细解释一下您正在添加的属性,当您说您使用 new 进行初始化时不清楚。您可以显示描述该属性的代码。
  • @faljbour - 我添加了解释
  • 您可能希望在构造函数中将他的属性传递给 PageWrapper 类,或者在其中添加一个 set 方法。获取控制器类中的值,然后将其传递给 PageWrapper
  • 不错的解决方案。谢谢你:)。
  • @faljbour 你应该把这个写成答案

标签: java spring properties spring-boot


【解决方案1】:

由于PageWrapper类是在控制器中实例化的,所以可以获取属性,只需在如下所示的方法中传递,也可以在PageWrapper类的构造函数中传递。

    @Configuration
    @Controller
    public class MyController 
    {

      @Value("${name}")
      private String name;

      @Value("${maxButtonQuantity}")
      private int maxButtonQuantity;

      ................

     //* pass the value to PageWrapper after you instantiate it,
     pageWrapper.setMaxButtonQuantity(maxButtonQuantity);

    }

    public class PageWrapper<T> {

      private int maxButtonQuantity = **I want to put here the property from file**;
      private Page<T> page;
      private List<PageItem> buttons;
      private int currentNumber;
      private String url;

      public void setMaxButtonQuantity(int maxButtonQuantity)
      {
        this.maxButtonQuantity = maxButtonQuantity;
      }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2020-06-29
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2017-08-31
    相关资源
    最近更新 更多