一个实用的注解,用来加载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

相关文章

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Spring @RequestMapping 注解及使用技巧详解

《Spring@RequestMapping注解及使用技巧详解》@RequestMapping是SpringMVC中定义请求映射规则的核心注解,用于将HTTP请求映射到Controller处理方法... 目录一、核心作用二、关键参数说明三、快捷组合注解四、动态路径参数(@PathVariable)五、匹配请

SpringCloud中的@FeignClient注解使用详解

《SpringCloud中的@FeignClient注解使用详解》在SpringCloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解来标记Feign客户端接口,这篇文章... 在Spring Cloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

Java 关键字transient与注解@Transient的区别用途解析

《Java关键字transient与注解@Transient的区别用途解析》在Java中,transient是一个关键字,用于声明一个字段不会被序列化,这篇文章给大家介绍了Java关键字transi... 在Java中,transient 是一个关键字,用于声明一个字段不会被序列化。当一个对象被序列化时,被

解读@ConfigurationProperties和@value的区别

《解读@ConfigurationProperties和@value的区别》:本文主要介绍@ConfigurationProperties和@value的区别及说明,具有很好的参考价值,希望对大家... 目录1. 功能对比2. 使用场景对比@ConfigurationProperties@Value3. 核

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

Spring Cache注解@Cacheable的九个属性详解

《SpringCache注解@Cacheable的九个属性详解》在@Cacheable注解的使用中,共有9个属性供我们来使用,这9个属性分别是:value、cacheNames、key、key... 目录1.value/cacheNames 属性2.key属性3.keyGeneratjavascriptor