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

Spring boot 2.0-用户配置

哈泰
2023-03-14

我有一个应用程序(springboot 2),其中客户希望编辑整数值,它表示AutoGrowCollectionLimit的最大值。默认情况下(根据spring文档),该值设置为256,这对于我们的目的来说是不够的。

设置属性的代码:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setAutoGrowCollectionLimit([configurable_number]);
}

这个值应该可以在配置文件(比如some.txt)中配置,该文件将作为txt文件发送到应用程序旁边。现在去哪里都没关系。txt文件,即使是应用程序的根目录,现在也可以了。

这意味着,作为一名客户,我能够轻松地改变它。打开一些。txt文件,并将值从i.e.:256更改为i.e.:555。

在调查过程中,我发现了这个。但它不适合我的情况。我正在寻找的是配置在some.txt文件与非常简单的属性,即:

AutoGrowCollectionLimit=[可配置的\u编号]

根据Spring文档,我尝试了以下内容:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setAutoGrowCollectionLimit(${set.max.collectionLimit});
}

并编辑了[project ectUrl]/src/main/Resources/application.yml如下:

set:
    max:
     collectionLimit: 500

IDE是期待')'或'}',当我试图调用此属性:

binder.setAutoGrowCollectionLimit(${set.max.collectionLimit});

有人能帮忙吗?

共有1个答案

叶谦
2023-03-14

在Spring Boot中创建外部化配置有多种方法,但您需要使用@Value注入来实现几乎所有这些方法。

要插入配置值,需要使用@Value注释。这可以在您可以使用@Autowired的所有相同位置完成。例如,在属性上:

@Value("${com.example.app.host-name}")
private String hostName;

或通过构造函数或方法:

@Value("${com.example.app.host-name}")
public void setHostName(String hostName) { ... }

或特定的构造函数或方法参数:

public MyServiceBean(
        @Value("${com.example.app.host-name}") String hostName,
        @Value("${com.example.app.port}") int port) {
    ...
}

您还可以使用此系统使用符号提供默认值,例如:

@Value("${com.example.app.port:8180}")
public void setPort(int port) { ... }

所有这些中的${}位都是使用Spring表达式语言解释的。在这种情况下,${property}语法告诉Spring从上下文中检索属性的值,这是通过在上下文中的所有PropertySourcebean中查找属性来完成的。您也可以使用环境自己完成这项工作。通过上下文获取属性,例如:

ApplicationContext appCtx = ... ;
int port = appCtx.getEnvironment().getProperty("com.example.app.port", Integer.class);

使用@Value注释更方便,原因与使用@Autowired更方便相同

由于您使用的是Spring Boot,您的应用程序中已经有一些PropertySource实例。例如,您的应用程序。yml文件作为PropertySource加载。请注意,Spring将名为a.b.c的属性转换为YAML文件中的嵌套文档。在您的情况下,这将是set。最大收集限制

Spring Boot通过查找应用程序来实现这一点。yml应用程序。属性文件,以及其他属性源,如系统。getProperties(),可以在文档中找到Spring Boot如何查找这些属性的默认顺序。

要外部化您的配置,您需要声明您不想使用. yml文件,但是.属性呢?例如:

set.max.collectionLimit=555

您可以将此文件与您的文件放在一起。jar文件并将其命名为应用程序。属性。此文件中的任何值都将覆盖内部应用程序中的值。yml文件。

他们也可以直接在命令行上覆盖它,例如:

java -jar your-app.jar --set.max.collectionLimit=555

或通过System属性:

java -Dset.max.collectionLimit=555 -jar your-app.jar

所有这些都是覆盖该值的有效方法,但仅当您使用值注入时,例如通过@value

 类似资料:
  • 本文向大家介绍基于Springboot2.0构建ES的多客户端,包括了基于Springboot2.0构建ES的多客户端的使用技巧和注意事项,需要的朋友参考一下 有时候我们操作es的时候会有一些特殊的需求,例如需要操作的index使用了不同的es服务器、用户名、密码、参数等,这个时候我们需要使用不同的es的客户端进行操作,但是我们又不希望拆分成多个项目进行使用,这个时候我们就需要在我们的配置中自己构

  • 我似乎找不到如何启用hystrix。SpringBoot2.0中的流。当我试图访问文件时,转到http://localhost:8080/hystrix.stream我得到一个404文件未找到错误。 在控制器中调用的方法: CommentHelper代码,请注意正在使用@HystrixCommand: 这些是来自构建的依赖项。格拉德尔: 当我进入http://localhost:8080/appl

  • 当用户在执行某些操作时,我们可以给用户设置积分和金币奖励,这里我们就可以在应用中给用户定义各种操作。 定义用户操作点 我们只要在我们的代码中添加cmf_user_action函数就可以了 cmf_user_action("login"); 添加用户操作配置文件 在每个应用下有个user_action.php配置文件,这个文件定义此应用所有的用户操作配置 如: <?php return [

  • 当用户在执行某些操作时,我们可以给用户设置积分和金币奖励,这里我们就可以在应用中给用户定义各种操作。 定义用户操作点 我们只要在我们的代码中添加cmf_user_action函数就可以了 cmf_user_action("login"); 添加用户操作配置文件 在每个应用下有个user_action.php配置文件,这个文件定义此应用所有的用户操作配置 如: <?php return [

  • 该章节用于帮助用户创建项目以及将用户加入到项目。 云联壹云 平台以项目划分资源,公有云等基础设施资源等可以通过项目分配给不同的项目使用,并支持设置配额等。用户本身跟资源没有任何关系,需要将要用户加到项目后,用户才可以使用项目中的资源。用户在项目中的权限由用户加入到项目的角色决定的。 云联壹云 平台默认内置了常用的角色以及定义了平台的系统权限等,当角色与权限不满足用户需求时,用户可以自定义配置角色和

  • 为使Bash更好地为我们服务,我们需定制bash shell环境。 2.3.1. .bash_profile、.bashrc、和.bash_logout 上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。其中.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被bash执行。.profile(由Bourne Shell和Kor