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

如何使用文本。Spring Boot服务中的属性?

钱志
2023-03-14

我有以下代码部分:

文本属性:

exception.NO_ITEM_FOUND.message=Item with email {0} not found

未发现此类元素异常:

public class NoSuchElementFoundException extends RuntimeException {

    public NoSuchElementFoundException(String message) {
        super(message);
    }
}

服务:

public EmployeeDto findByEmail(String email) {
    return employeeRepository.findByEmail(email)
            .map(EmployeeDto::new)
            .orElseThrow(() -> new NoSuchElementFoundException(NO_ITEM_FOUND));
}

在这一点上,我不知道如何获得文本上的no\u ITEM\u FOUND消息。基于用户语言的属性(目前仅为默认值)。

我创建了以下方法,但不确定我是否需要它或应该如何使用它。

private final MessageSource messageSource;


private String getLocalMessage(String key, String... params){
    return messageSource.getMessage(key,
            params,
            Locale.ENGLISH);
}

那么,我如何才能从服务中正确地获取未找到的文本属性?

共有1个答案

翁良弼
2023-03-14

您不需要getLocalMessage方法。只需将实例变量添加到服务类中:

@Value("${exception.NO_ITEM_FOUND.message}")
private String NO_ITEM_FOUND;

并用@Value注释,然后在代码的理想位置使用变量:

@Service
public class EmployeeService {

    @Value("${exception.NO_ITEM_FOUND.message}")
    private String NO_ITEM_FOUND;

    public EmployeeDto findByEmail(String email) {
        return employeeRepository.findByEmail(email)
                .map(EmployeeDto::new)
                .orElseThrow(() -> new NoSuchElementFoundException(NO_ITEM_FOUND));
    }

}
 类似资料:
  • 我正在通过google play服务使用Google Cloud消息传递。问题是它仅适用于安装了上一个版本的play服务的设备,在其余设备中,我需要显示一个对话框以将用户发送到google play以安装新版本女巫我真的不想做! 那我怎么能避免呢?!我正在尝试使用较旧版本的play services(比如两年前的版本),以确保我的大多数用户不需要更新,但grade和android sdk似乎不可能

  • 然而,我遇到了一些问题,让它读取本地属性文件,而不是从GitHub中提取属性。似乎spring忽略了本地文件,即使我删除了所有对GitHub的引用。这里有一个类似的问题:Spring-Cloud配置服务器忽略配置属性文件 但我还没看到什么好的答案。我想知道有人能给我举个例子吗?我希望在本地设置我的属性,而不是使用任何类型的git repo。我想有人以前遇到过这种情况,如果有这样的例子,我真的很想看

  • 我正在将ApacheFelixSCR注释迁移到OSGI声明性服务[AEM]。在迁移过程中,我无法在DS中找到基数的精确替换。 现有的SCR实施: 现在它在OSGi声明性服务中迁移如下 在DS注释实现中,我必须映射@Property中存在的参数基数。请推荐我

  • 了解在 Dreamweaver 中如何使用文本属性检查器应用 HTML 格式或 CSS 格式。 可以使用文本属性检查器应用 HTML 格式或层叠样式表 (CSS) 格式。应用 HTML 格式时,Dreamweaver 会将属性添加到页面正文的 HTML 代码中。应用 CSS 格式时,Dreamweaver 会将属性写入文档头或单独的样式表中。 注意:在创建 CSS 内联样式时,Dreamweave

  • 我有一个类似于以下内容的Spring启动配置文件, 我已将角度项目中的构建文件复制粘贴到中。 不知道这有没有关系。下面是我的< code>JwtFilter.java, 我尝试过将这些js构建文件添加到元INF /资源,公共 目录结构为: < li>java/... < li >资源/ < ul > < li >资源/ < ul > < li >元信息/ < ul > < li >资源/[包含角度

  • 我从Apache切换到Nginx,使用apache,皮肤文件夹中的所有静态文件(图像、css、javascript)都直接由Apache提供服务。 示例: 我读了一些关于Nginx和Plone的文档,但我没有看到。下面是Plone.orgconf的例子:https://github.com/plone/plone-org-nginx/blob/master/nginx.conf 所以,我的问题是: