一个实用的注解,用来加载properties文件中的值到controller中 @Value

2024-06-22 11:48

本文主要是介绍一个实用的注解,用来加载properties文件中的值到controller中 @Value,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

spring容器中properties文件的注入

<util:properties id="xxx" location="classpath:xxx.properties"></util:properties>

1、properties文件中:

username=root

Java类中为属性赋值方式:@Value("xxx.username")

domain.url.name=https://www.baidu.com

Java类中为属性赋值方式:@Value("xxx['domain.url.name']")

在我们项目中往往会使用到properties配置文件来定义一些跟系统环境有关的配置,因此今天我们学习使用spring中的@Value注解来快速方便地将我们配置文件中的变量值赋值给java类的属性值。

1.首先我们先在项目中建一个properties配置文件,然后定义好我们需要的变量名和对应的值

2.然后我们需要在spring-mybatis.xml配置文件中将这个配置文件添加到spring项目中,代码:

 

  <!--测试@Value注解的配置文件--><context:property-placeholder location="classpath:config/value.properties" ignore-unresolvable="true"/>


3.我们需要一个Java类来申明我们需要的Java变量,在变量的前面标注注解@Value("${xxx}"),xxx就是配置文件中的变量名称,该注解只能使用在类属性值上面,代码:

package com.ssm.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** Created by viking on 2018/09/01* 系统常量配置类*/
@Component
public class SystemConfig {@Value("${value.name}")public String sys_name;@Value("${value.value}")public  String sys_value;@Value("${value.type}")public  String sys_type;
}


4.现在看似我们的操作就做完了,其实不然,我们还需要一个重要的步骤,我们需要将我们的Java类注入到spring容器中,这样@Value注解才能生效,毕竟是spring的注解嘛,这些操作只有让它自己来做才行的。在spring-mybatis.xml中注入Java类的实例,我使用的是@Component注解加包扫描的方式,当然你也可以直接配置一个bean在xml文件中,效果都一样,代码:

   

 <!--spring扫描注入bean--><context:component-scan base-package="com.ssm.config"/>


5.该做的操作都做完了,下面开始测试阶段,让我们看看这个靠不靠谱吧!编写一个测试类,代码:

package com.ssm.controller;import com.ssm.config.SystemConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** Created by viking on 2018/09/01* 测试Controller*/
@RestController
@RequestMapping("test")
public class TestController {@Autowiredprivate SystemConfig systemConfig;@RequestMapping("value")public Object testValue(){Map<String,String> map = new HashMap<String, String>();map.put("sys_name",systemConfig.sys_name);map.put("sys_value",systemConfig.sys_value);map.put("sys_type",systemConfig.sys_type);return map;}
}


运行效果:

这样就实现了在spring中使用@Value注解直接获取properties文件中的变量值。

但是,这里还有一个问题,如果我在配置文件中配置了中文汉字,会发生什么情况呢?如图:

运行结果:

出现乱码了,这个问题怎么解决呢?很简单,在向spring中引入properties配置文件是加上这个:

<!--测试@Value注解的配置文件-->
<context:property-placeholder location="classpath:config/value.properties" file-encoding="UTF-8" ignore-unresolvable="true"/>


把UTF-8换成你自己项目中使用的编码方式即可。

运行结果:

这篇关于一个实用的注解,用来加载properties文件中的值到controller中 @Value的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084205

相关文章

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

使用@Slf4j注解,log.info()无法使用问题

《使用@Slf4j注解,log.info()无法使用问题》在使用Lombok的@Slf4j注解打印日志时遇到问题,通过降低Lombok版本(从1.18.x降至1.16.10)解决了问题... 目录@Slf4androidj注解,log.info()无法使用问题最后解决总结@Slf4j注解,log.info(

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。