这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
| 作者:江夏
| CSDN:blog.csdn.net/qq_41153943
| 知乎:www.zhihu.com/people/1024…
| GitHub:github.com/JiangXia-10…
本文大概1165字,建议阅读9分钟
在配置文件中可以通过property 标签对Bean进行赋值:
<context:component-scan base-package="com.xinyi"></context:component-scan>
<bean id="Person" class="com.xinyi.bean.Person" init-method="" destroy-method="">
<property name="name" value="新一"></property>
<property name="age" value="18"></property>
</bean>
在spring的注解开发中可以使用@value注解对Bean的属性进行赋值。@Value注解作用:
该注解的作用是将我们配置文件的属性读出来,与上面的property一样的,该注解有两种方式:@Value(“${}”) 和 @Value(“#{}”) 两种方式。
具体使用的代码如下:
首先新建一个person实体类:
package com.xinyi.bean;
import org.springframework.beans.factory.annotation.Value;
public class Person {
private String name;
private Integer age;
private String sname;
public String getName() {
return name;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sname=" + sname + "]";
}
public Person(String name, Integer age, String sname) {
super();
this.name = name;
this.age = age;
this.sname = sname;
}
public Person() {
}
}
然后在配置类中通过使用bean注解将Bean注入到IOC容器中,关于bean的注册可以参考之前的文章:Spring注解(五):容器注册组件的四种方式:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.xinyi.bean.Person;
@Configuration
public class MyConfig2 {
@Bean
public Person person() {
return new Person();
}
}
使用@Test注解进行代码测试,输出Bean:
@Test
public void test6() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig2.class);
Person person = (Person) applicationContext.getBean("person");
System.out.println(person);
}
可以发现由于没对Bean的name、age和sname属性进行赋值,所以得到的输出的结果都为null,输出结果如下所示:
通常也可以在配置类文件中直接对其进行属性的赋值操作,不过这种调用有参构造函数的方式比较僵硬,所以不推荐。这种方式如下:
@Bean
public Person person() {
return new Person("亚索",23,"孤儿玩家");
}
同样也可以读到其属性值,输出结果如下
这里主要介绍的是通过@Value注解将外部的值动态注入到Bean中,并且@value注解可以配合@PropertySource注解将外部配置文件的值注入Bean的属性,具体的代码如下,在person类中使用@value注解对属性进行赋值: @value基本类型赋值
@Value("亚索")
private String name;
@value:SpEL表达式赋值,下面结果为24
@Value("#{23+1}")
private Integer age;
@value:获取properties配置文件中的值需要搭配@PropertySource注解(在配置类上)
@Value("${person.sname}")
private String sname;
person.properties配置文件内容如下:
获取person.properties配置文件中的sname的值需要在配置类上加上@PropertySource注解,
@PropertySource(value={"classpath:/person.properties"})
输出结果如下:
以上就是如何在spring开发中给Bean的属性注值的两种方式,这里主要介绍的是使用@value注解对Bean进行属性赋值。
相关推荐: