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

在Spring中以字符串数组形式读入文件

袁高明
2023-03-14

我有一个名为security.properties的文件,它看起来像这样:

com.example.test.admins=username,username1,username2

我想把那个文件作为字符串数组读入。这实际上在一个包中起作用:

package com.example.test.security

import org.springframework.beans.factory.annotation.Value
import org.springframework.ldap.core.DirContextOperations
import org.springframework.security.core.GrantedAuthority
import org.springframework.security.core.authority.SimpleGrantedAuthority
import org.springframework.security.ldap.userdetails.LdapAuthoritiesPopulator

class CustomLdapAuthoritiesPopulator implements LdapAuthoritiesPopulator {
    @Value('${com.example.test.admins}')
    private String[] admins

    @Override
    public Collection<? extends GrantedAuthority> getGrantedAuthorities(
            DirContextOperations userData, String username) {
        def roles = [new SimpleGrantedAuthority("user")]
        if (username in admins)
            roles.add(new SimpleGrantedAuthority("admin"))
        roles
    }
}

我已经检查了每个导入,每个导入都被导入文件以外的其他东西使用。

在另一个包中,它忽略字符串插值:

package com.example.test.controller

// imports excluded for brevity

@Controller
class UserController {
    @Value('${com.example.test.admins}')
    private String[] admins

    public User get() {
        def name = // Name gets put here
        def admin = name in admins
        println admins
        println admin
        return new User(name: name, admin: admin)
    }
}

在控制台中生成此输出:

[${com.example.test.admins}]
false

唯一提到该文件的是security applicationContext。xml

<context:property-placeholder
     location="classpath:security.properties"
     ignore-resource-not-found="true"
     ignore-unresolvable="true"/>

但是,将其复制到applicationContext中。xml不会改变任何东西。


共有1个答案

百里俭
2023-03-14

感谢@ataylor为我指明了正确的方向。

Spring中的控制器不使用相同的上下文。因此,我创建了一个名为UserService的服务:

@Service
class UserService {
    @Value('${com.example.test.admins}')
    private String[] admins

    boolean getUserIsAdmin(String username) {
        username in admins
    }

}

在UserController中自动安装了服务,它的工作方式就像一个魅力。

 类似资料:
  • 问题内容: 我正在从文件中读取行,然后使用它们。每行仅由浮点数组成。 我整理了几乎所有内容,将这些行转换为数组。 我基本上是这样做的(pseudopython代码) 这行得通,但是似乎有点违反直觉和反pythonic,我想知道是否有更好的方法来处理来自文件的输入,以使最后有一个充满浮点数的数组。 问题答案: 快速回答: 如果您经常处理此类数据,csv模块将有所帮助。 如果您感到疯狂,甚至可以使用完

  • 主要内容:读字符串函数 fgets,写字符串函数 fputsfgetc() 和 fputc() 函数每次只能读写一个字符,速度较慢;实际开发中往往是每次读写一个字符串或者一个数据块,这样能明显提高效率。 读字符串函数 fgets fgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的用法为: str 为字符数组,n 为要读取的字符数目,fp 为文件 指针。 返回值:读取成功时返回字符数组首地址,也即 str;读取失败时返回 NULL

  • 主要内容:字符读取函数 fgetc,字符写入函数 fputc在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块)。本节介绍以字符形式读写文件。 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符。主要使用两个函数,分别是 fgetc() 和 fputc()。 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。fget

  • 每当我在这个集合中保存一些数据时,我就声明了一个类LoanDetails和一个包含BigDecimal类型loanAmount的字段 它以字符串形式存储在mongo db数据库中 我试图在loanAmount字段上添加注释

  • 问题内容: 我认为能够将文本文件读入和写出字符串数组的能力是相当普遍的要求。从一种语言开始消除最初访问数据库的需求时,它也非常有用。Golang中是否存在? 例如 和 我宁愿使用现有的而不是重复的。 问题答案: 从Go1.1版本开始,有一个bufio.Scanner API可以轻松读取文件中的行。考虑上面的以下示例,该示例使用Scanner重写:

  • 问题内容: 这是我当前的XML。如果只列出一个列表,一切都会好起来的。 问题是需要一个字符串数组。 春天怎么办? 问题答案: 您应该使用: 一个数组可以包含多个内部bean,ref,collection或value元素。即使当被定义为例如值类型为Object的映射的值时,此配置元素也始终会导致一个数组。 您还可以指定要传递的值类型: 值类型 嵌套值的默认Java类型。必须是完全合格的班级名称。