广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring中如何使用@Value注解实现给Bean属性赋值
  • 276
分享到

Spring中如何使用@Value注解实现给Bean属性赋值

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

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

摘要

目录属性赋值@Value注解的定义:测试1.在添加了spring依赖的Maven项目中创建2.在resources目录下创建一个配置文件person.properties3.创建配置

属性赋值

只用Spring注解开发的时候,可以使用@Value搭配@PropertySource注解进行给Bean的属性进行赋值。

@Value

@Value注解的定义:


@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATioN_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Value {
 
 String value();
}

可以看到@Value注解接受的参数只能是字符串,所以使用时参数都需要带上双引号。并且可以在属性,方法,参数等位置上标注。value属性支持以下三种类型:

基本数据类型,包括String,int,boolean等类型。

SpEL,#{}的形式即表示使用SpEL表达式,一般用于获取环境中其他bean的属性,当使用Elivis运算符“表达式1?:表达式2”,比如#{ “obj.property? :default_value” }形式时,这里的obj是取当前容器中的对象,default_value就是前面的值为空时的默认值。

在主配置类中通过@PropertySource注解加载配置文件,然后通过${ property : default_value}的形式取配置文件中的值,其中default_value表示前面的值为空时的默认值。

测试

1.在添加了Spring依赖的Maven项目中创建

以下两个实体类Student类和Teacher类


public class Teacher {
 public int id;
 public String name;
 
 public Teacher() {
  // TODO Auto-generated constructor stub
  System.out.println("teacher-----创建");
 }
 
 
 public Teacher(int id, String name) {
  super();
  this.id = id;
  this.name = name;
 } 
//省略getter和setter方法
}

在Student类中使用${}取配置文件的值,#{}取容器中的teacher对象的name属性


public class Student{
 
 @Value("1")
 private int id;
 @Value("${student.name}")
 private String name;
 @Value("${student.address:北京}")
 private String address;
 @Value("#{teacher.name?:'老子'}")
 private String teacherName;
 @Override
 public String toString() {
  return "Student [id=" + id + ", name=" + name + ", address=" + address + ", teacherName=" + teacherName + "]";
 }
//省略getter和setter方法
}

2.在resources目录下创建一个配置文件person.properties

添加以下值:


student.name=张三
person.address=广州市

3.创建配置类

使用@PropertySource注解读取外部配置文件person.properties中的key/value保存到运行的环境变量中。


@Configuration
@PropertySource("person.properties")
public class SprinGConfig2 { 
    @Bean
 public Student student() {
  return new Student();  
 }
    @Bean
 public Teacher teacher() {
  return new Teacher(2,"老李");
 }
}

4.创建测试类进行测试

编写代码获取容器中的id为student的bean和直接获取配置环境的属性值。


public class iocTest {
 @Test
 public void test() {
  //获取Spring的IOC容器
  AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(SpringConfig2.class);
  //从容器中获取bean
       Student stu = (Student) applicationContext.getBean("student");
       System.out.println(stu);   
     //获取环境变量
  ConfigurableEnvironment environment = applicationContext.getEnvironment();
  String property = environment.getProperty("person.address");
  System.out.println(property);
  //关闭容器
  applicationContext.close();
 }
}

5.测试结果:

在这里插入图片描述

如何给Bean的属性赋值(注入)

1.通过构造方法设置值。

2.设置注入(通过set方法)

通过property标签(内部是通过调用类的set方法将值注入)

在这里插入图片描述

在这里插入图片描述

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

--结束END--

本文标题: Spring中如何使用@Value注解实现给Bean属性赋值

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring中如何使用@Value注解实现给Bean属性赋值
    目录属性赋值@Value注解的定义:测试1.在添加了Spring依赖的Maven项目中创建2.在resources目录下创建一个配置文件person.properties3.创建配置...
    99+
    2022-11-12
  • 使用Spring如何实现注入属性
    使用Spring如何实现注入属性?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过...
    99+
    2023-05-31
    spring 属性注入
  • 如何实现在网页中通过param name方式给ActiveX控件的属性赋值
    本篇内容主要讲解“如何实现在网页中通过param name方式给ActiveX控件的属性赋值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现在网页中通过param name方式给Activ...
    99+
    2023-06-08
  • 在Spring Boot中使用注解如何实现Redis 缓存
    在Spring Boot中使用注解如何实现Redis 缓存?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、创建 Caching 配置类RedisKeys.Javapackag...
    99+
    2023-05-31
    springboot redis 注解
  • 使用springboot如何实现获取配置文件中的属性值
    本篇文章给大家分享的是有关使用springboot如何实现获取配置文件中的属性值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在spring boot中,简单几步,读取配置文件...
    99+
    2023-05-31
    springboot 配置文件
  • 在Spring Boot项目中如何实现使用 Mybatis中的@ Annotation注解
    在Spring Boot项目中如何实现使用 Mybatis中的@ Annotation注解?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、运行 springboot-myba...
    99+
    2023-05-31
    springboot mybatis @ annotation
  • Spring 中的事务管理如何使用注解实现配置
    Spring 中的事务管理如何使用注解实现配置?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用步骤:步骤一、在spring配置文件中引入<tx:>命名空间&l...
    99+
    2023-05-31
    spring 注解 事务管理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作