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

可用于应用程序的属性列表。Spring Boot中的属性?

阎安邦
2023-03-14

Spring Boot文档说我们可以在application.properties文件中设置属性。
但我找不到列出可设置的可用属性的文档。
在哪里可以找到这样的文档?

例如,我想为html" target="_blank">嵌入式Servlet设置documentRoot。
我发现setDocumentRoot()方法是在AbstractembedDedServletContainerFactory.java中实现的。
但我不知道何时何地调用该方法,也不知道可以在Application.Properties中设置的属性名称。
我认为这应该很容易,因为Spring Boot的目的就是简化配置。

提前道谢。

更新:

正如M.Deinum所建议的,我将'server.document-root:someDirectoryName'添加到application.properties中,但发生了以下错误。

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'document-root' of bean class [org.springframework.boot.context.embedded.properties.ServerProperties]: Bean property 'document-root' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
    at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1057)
    at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:915)
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:82)
    at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:730)
    at org.springframework.validation.DataBinder.doBind(DataBinder.java:626)
    at org.springframework.boot.bind.RelaxedDataBinder.doBind(RelaxedDataBinder.java:78)
    at org.springframework.validation.DataBinder.bind(DataBinder.java:611)
    at org.springframework.boot.bind.PropertiesConfigurationFactory.doBindPropertiesToTarget(PropertiesConfigurationFactory.java:232)
    at org.springframework.boot.bind.PropertiesConfigurationFactory.bindPropertiesToTarget(PropertiesConfigurationFactory.java:204)
    at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessAfterInitialization(ConfigurationPropertiesBindingPostProcessor.java:312)
    ... 31 more
package com.sample.server;

import java.io.File;

import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SampleConfiguration
{
    @Bean
    public SampleServerProperties sampleServerProperties()
    {
        return new SampleServerProperties();
    }

    @ConfigurationProperties(name = "sample.server")
    public static class SampleServerProperties
        implements EmbeddedServletContainerCustomizer 
    {
        private String documentRoot;
        public String getDocumentRoot()
        {
            return documentRoot;
        }
        public void setDocumentRoot(String documentRoot)
        {
            System.out.println("############## setDocumentRoot");
            this.documentRoot = documentRoot;
        }

        @Override
        public void customize(ConfigurableEmbeddedServletContainerFactory factory)
        {
            if (getDocumentRoot() != null)
            {
                factory.setDocumentRoot(new File(getDocumentRoot()));
            }
        }
    }
}

“#################SetDocumentRoot”被打印到控制台,文档根目录实际上被设置了。

所以,我现在很高兴,但这是正确的做法吗?

共有1个答案

印宏阔
2023-03-14

目前对原问题最正确的答案是,在一个位置上没有(而且技术上也不可能)一个详尽无遗的列表。我们可以并且将尽可能多地记录它(如果时间允许--感谢接受贡献)。用户指南中有一个手工整理的属性列表,该列表并非详尽无遗,而且可能不准确。最终的列表来自于在源代码中搜索@configurationproperties@value注释,以及偶尔使用relaxedenvironment(此处为C.F.)。在howto文档中也有一些一般性的建议。

 类似资料:
  • 我在src/main/resources下创建了2个文件: 应用程序。属性 第一个具有从env变量中获取值的属性,而后者具有固定值。 根据这里的具体情况,我以这样的方式推出了Spring靴: 然而,不会产生任何影响,并且应用程序是局部的。属性似乎被忽略。 有什么提示吗?

  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud

  • 我有一个SpringBoot项目(maven/java8)。 我想通过Maven配置文件(dev.properties|prod.properties)过滤src/main/Resources/application.properties中的一些自定义变量 Maven命令: 应用属性: 开发属性: prod.properties: pom.xml:

  • 我试图将Redis与Spring的一起使用,但需要根据Spring Boot风格的应用程序属性有条件地打开或关闭缓存。我的第一次尝试似乎不起作用。 application.properties文件: properties类: 服务方法注释: 结果如下: 有没有人知道问题出在哪里,或者有没有其他的方法可以达到这个目的?

  • 我正在运行一个springboot应用程序,它需要信任我在本地信任库中添加的证书。现在我将它设置在intellij中的运行配置选项下,它有效。ex- 我想知道有没有办法从应用程序设置它。以我们设置spring属性的方式在springboot中创建属性文件?