属性赋值
概述
在Spring中,我们可以使用@Value
来为我们的属性赋值。
使用@Value
赋值,可以:
- 基本参数
- 可以写Spel表达式:#{}
- 可以使用${},取出配置文件(.properties)中的值(即运行环境中的值)
测试
1.编写配置文件person.properties,配置文件中设置人物的昵称person.nickName=张三蛋
2.编写person类:
package com.xdw.pojo;
import org.springframework.beans.factory.annotation.Value;
public class Person {
// 使用@Value赋值:
// 1.基本参数
// 2.可以写SpEl: #{}
// 3.可以写${}; 取出配置文件中【properties】的值(在运行环境变量里的值)
@Value("张三")
private String name;
@Value("#{20-2*3}")
private Integer age;
@Value("${person.nickName}")
private String nickName;
public Person() {
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
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 +
", nickName='" + nickName + '\'' +
'}';
}
}
3.编写配置类
package com.xdw.config;
import com.xdw.pojo.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
// @PropertySource将指定路径下的配置文件加载进程序运行环境中
@PropertySource(value="classpath:person.properties")
@Configuration
public class MainConfigOfValueProperty {
@Bean
public Person person() {
return new Person();
}
}
4.编写测试类
import com.xdw.config.MainConfigOfValueProperty;
import com.xdw.pojo.Person;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class TestProperty {
@Test
public void test01() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfValueProperty.class);
Person person = (Person)applicationContext.getBean("person");
System.out.println(person);
}
}
5.运行测试
总结
@Value注解有以下三种使方式:
- 基本参数
- 可以写Spel表达式:
#{}
- 可以使用
${}
,取出配置文件(.properties)中的值(即运行环境中的值) - 我们可以使用
@PropertySource
注解来将我们的配置文件加载到运行环境中
自动装配
概述
自动装配: Spring利用依赖注入(DI),完成对IOC容器中各个组件依赖关系赋值
方式一:Spring自带注解
@Autowried
- 该注解默认优先按照类型去容器中找到对应组件,找到就直接赋值
- 如果找到多个相同类型的组件,就将属性的名称作为组件的id去容器中查找
- 可以使用
@Qualifier
注解来指定需要装配的组件的id - 自动装配默认一定要将组件装配好,否则就会报错!可以使用
@Autowired(required = false)
修改这一默认配置 -
@Primary
注解,放在bean或者创建bean的方法上,让Spring进行默认装配的时候,首选!
方式二:@Resource(JSR250)和@Inject(JSR330)[java规范的注解]
@Resource:
- 可以和@Autowried一样,实现自动装配功能:默认是按照组件名称进行装配的
- 没有支持@Primary注解功能,也没有@Autowired(required = false)这一配置
@Inject:
- 需要导入javax.inject依赖,和@Autowried功能一样,但是没有required=false的功能
<!-- 支持JSR330规范 -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
自动装配使用起来比较简单,在这里就不测试了,大家可以参考文档自行测试!