返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot的属性赋值@Value的用法说明
  • 537
分享到

SpringBoot的属性赋值@Value的用法说明

2024-04-02 19:04:59 537人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录今天学习到了SpringBoot 的属性赋值@Value用法先总结例子@Value的使用及注意事项为什么使用参数形式前置条件(注意事项)今天学习到了springBoot 的属性赋

今天学习到了springBoot 的属性赋值@Value用法

先总结

  • @Value(" 张三 "):直接附在属性名上,在Bean初始化时,会赋初始值
  • @Value(" #{ 20 - 2 } "):可以用 #{ },里面可以写表达式,当然也可以直接 @Value(" #{ 18 } ") 或 @Value(" 18 ")
  • @Value(" ${ person.name } "):利用 ${ } 可以取出配置文件中的值

例子

配置类:

@PropertySource(value={"classpath:/person.properties"})
@Configuration
public class MainConfiGofPropertyValues {
 
    @Bean
    public Person person() {
        return new Person();
    }    
}
  • @Configuration:告诉 Spring 这是一个配置类
  • @PropertySource:关联配置文件,使用 @PropertySource 指定读取外部配置文件,保存到运行的环境变量中,然后可以用@Value(" ${ person.name } ") 获取环境变量中的值。

Bean :

public class Person { 
    
    
    @Value("张三")
    private String name;
    @Value("#{20-2}")
    private int age;
    @Value("${person.nickName}")
    private String nickName;
    
    public String getNickName() {
        return nickName;
    }
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", nickName=" + nickName + "]";
    }
    public Person(String name, int age, String nickName) {
        super();
        this.name = name;
        this.age = age;
        this.nickName = nickName;
    }
    public Person() {
        super();
        // TODO Auto-generated constructor stub
    }    
}

配置文件:

person.nickName=\u5C0F\u4E09

这里面的 \u5C0F\u4E09 表示的是“小三”

而配置文件的位置: 

运行:

public class iocTest_PropertyValue {
 
	//容器创建
	AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);
	
	//打印容器中Bean的name
	private void printBeans(AnnotationConfigApplicationContext applicationContext) {
		String[] definitionName = applicationContext.getBeanDefinitionNames();
		
		for(String name : definitionName) {
			System.out.println(name);
		}
	}
	
	@Test
	public void test01() {
		printBeans(applicationContext);
		System.out.println("-------------------------------------------------------");
		
		//获得容器中的Person
		Person person = (Person) applicationContext.getBean("person");
		System.out.println(person);
		
		//获得环境变量中的值
		ConfigurableEnvironment environment = applicationContext.getEnvironment();
		String property = environment.getProperty("person.nickName");
		System.out.println("环境变量:"+property);		
		applicationContext.close();
	}	
}

运行结果:

@Value的使用及注意事项

为什么使用

使用@Vlue可以实现对于线上项目的一些通用配置的修改;或者修改项目中可能出现变动,但是却又有很多地方都在使用的一些参数,这样我们我可直接通过修改配置文件而不用修改代码的方式来达到参数的修改的目的

参数形式

yml文件

(简单的参数)

test1:
     num: 1
     name: xiaoming

获取数据

@Value("${test1.num}")
private int num;
@Value("${test1.name}")
private String name;

(数组||集合)

test:
  array1: aaa,bbb,ccc
  array2: 111,222,333
  array3: 11.1,22.2,33.3
  list1: DDD,eeee,111,333,222,444

获取数据

//数组
@Value("${test.array1:}")
private String[] array1;
//集合
@Value("#{'${test.list1:}'.split(',')}")
private List<String> list1;
//集合进一步做空数据处理
@Value("#{'${test.list:}'.empty ? null : '${test.list:}'.split(',')}")
private List<String> testList;

(Map)

test:
  map1: '{"name": "zhangsan", "sex": "male"}'
  map2: '{"math": "90", "english": "85"}'

获取数据

@Value("#{${test.map2}}")
private Map<String,String> map1;
@Value("#{${test.map2}}")
private Map<String,Integer> map2;

前置条件(注意事项)

想要能够很好的使用的使用@Value 需要注意一些前置条件

1. 使用正确的注解

@Value的使用要找对目标,我们所使用的注解的引用时这样的

2. yml文件的格式

如果你使用的是yml文件的话,需要注意yml文件的注意格式问题 ,基本上参数名之后的冒号之后都要加空格,一般情况下,冒号后面加了空格,参数名都会变为蓝色

3. @Value使用的环境要求

  • 不能作用于静态变量(static);
  • 不能作用于常量(final);
  • 不能在非注册的类中使用(类需要被注册在spring上下文中,如用@Service,@RestController,@Component等);
  • 使用这个类时,只能通过依赖注入的方式,用new的方式是不会自动注入这些配置的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringBoot的属性赋值@Value的用法说明

本文链接: https://lsjlt.com/news/143981.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot的属性赋值@Value的用法说明
    目录今天学习到了SpringBoot 的属性赋值@Value用法先总结例子@Value的使用及注意事项为什么使用参数形式前置条件(注意事项)今天学习到了SpringBoot 的属性赋...
    99+
    2024-04-02
  • 利用@Value注解为bean的属性赋值方法总结
    目录1.@Value注解2.@Value注解的用法2.1.不通过配置文件注入属性的情况2.2.通过配置文件注入属性的情况2.3.@Value中#{··&m...
    99+
    2023-05-19
    @Value注解为bean的属性赋值 @Value为bean属性赋值 @Value bean
  • Vue.component的属性说明
    目录Vue.component的属性1.template2.data3.methods4.propsVue的component标签作用is属性Vue.component的属性 Vue...
    99+
    2024-04-02
  • springboot中@Value的工作原理说明
    我们知道springboot中的Bean组件的成员变量(属性)如果加上了@Value注解,可以从有效的配置属性资源中找到配置项进行绑定,那么这一切是怎么发生的呢? 下文将简要分析一下...
    99+
    2024-04-02
  • BeanUtils.copyProperties()参数的赋值顺序说明
    目录BeanUtils.copyProperties()参数的赋值顺序BeanUtils.copyProperties初体验,及其参数含义解释用处案例: 创建一个源类:source创...
    99+
    2024-04-02
  • Mybatis的mapper标签 namespace属性用法说明
    目录Mybatis mapper标签namespace属性说明MyBatis的命名空间(我们以下图的文件结构来说明)下面我来说一下他们三个之间的关系,我们Mybatis中namesp...
    99+
    2024-04-02
  • pandas DataFrame 赋值的注意事项说明(index)
    一 pandas DataFrame一列赋值问题 说明,把b的列赋值给a 情况1:a,b index设置相同 如下代码 import pandas as pd import nu...
    99+
    2024-04-02
  • VBS中Value属性的用法
    本篇内容主要讲解“VBS中Value属性的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS中Value属性的用法”吧!Value 属性返回在一个搜索字符串中找到的匹配的值或文本。obje...
    99+
    2023-06-08
  • log4j中logger标签中additivity属性的用法说明
    目录log4j logger标签中additivity属性log4j.additivity用法和例子log4j logger标签中additivity属性 将logger中的 add...
    99+
    2024-04-02
  • Spring中如何使用@Value注解实现给Bean属性赋值
    目录属性赋值@Value注解的定义:测试1.在添加了Spring依赖的Maven项目中创建2.在resources目录下创建一个配置文件person.properties3.创建配置...
    99+
    2024-04-02
  • python类的私有属性和公共属性说明
    目录python类私有属性和公共属性python私有属性的定义python类私有属性和公共属性 对于python而言,类的属性的可见度只有两种,public和private。 类的私...
    99+
    2024-04-02
  • Vue.delete()删除对象的属性说明
    目录Vue.delete()删除对象的属性delete和Vue.delete的区别Vue.delete()删除对象的属性 Vue.delete( target, key ) da...
    99+
    2024-04-02
  • VBS对象Dictionary的属性和说明
    本篇内容主要讲解“VBS对象Dictionary的属性和说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS对象Dictionary的属性和说明”吧!Dictionary 保存数据键和项目对...
    99+
    2023-06-08
  • @FeignClient注解中属性contextId的使用说明
    目录一、概述二、解决方案2.1 方案12.2 方案2三、源代码分析相关代码1相关代码2一、概述 如果我们使用Feign定义了两个接口,但是目标服务是同一个,那么在SpringBoot...
    99+
    2024-04-02
  • FeignClient中name和url属性的作用说明
    目录name和url属性的作用定义场景解释@FeignClient注解属性vaule和name 其实是一个属性关于调用目前有两种name和url属性的作用 定义 feign是声明式的...
    99+
    2024-04-02
  • 探讨Vue子组件属性赋值的方法
    Vue 是一种流行的 JavaScript 框架,能够在 Web 应用程序中快速而方便地构建可重用的组件。它通过响应式编程模型以及模板语法来实现组件化延伸。本文旨在探讨 Vue 子组件属性赋值的方法。Vue 子组件Vue 应用由一个或多个组...
    99+
    2023-05-14
  • Vue中computed(计算属性)和watch(监听属性)的用法及区别说明
    目录计算属性computed侦听属性watch计算属性computed 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持异步,当computed内有异步操作时无效,无法监听数...
    99+
    2024-04-02
  • java如何给类的属性赋值
    在Java中,可以通过以下几种方式给类的属性赋值:1. 在类的构造方法中赋值:在类的构造方法中可以直接给属性赋初始值。例如:```j...
    99+
    2023-09-11
    java
  • 基于R语言赋值符号的区别说明
    R语言赋值可以用=或<-,一般都建议使用<-,那你知道这两个之间的区间吗?那你有没有见过‘<-'和‘='这种赋值方法吗?今天就来和大家聊聊这基本的赋值符号都有哪些区...
    99+
    2024-04-02
  • javascript如何设置input value属性的值
    本篇内容主要讲解“javascript如何设置input value属性的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript如何设置input...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作