//使用@Value赋值的几种类型;
//1、基本数值
//2、可以写SpEL; #{}
//3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)
一、新建person.properties文件
内容:
person.nickName=小张三
二、新建配置类 MainConfigOfPropertyValues.java
使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件的值;并注入Person对象
package com.atguigu.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.atguigu.bean.Person;
//使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件的值
@PropertySource(value={"classpath:/person.properties"})
@Configuration
public class MainConfigOfPropertyValues {
@Bean
public Person person(){
return new Person();
}
}
三、新建Person类
属性上面@Value()表示赋值
@Value("#{20-2}"):使用了正则表达式的值
@Value("${person.nickName}"):表示引用到了person.properties中定义的person.nickName的值,在配置了中加载了properties文件
package com.atguigu.bean;
import org.springframework.beans.factory.annotation.Value;
public class Person {
//使用@Value赋值;
//1、基本数值
//2、可以写SpEL; #{}
//3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)
@Value("张三")
private String name;
@Value("#{20-2}")
private Integer 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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Person(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", nickName=" + nickName + "]";
}
这种方式也等同于spring的xml中:
<context:property-placeholder location="classpath:person.properties"/>
<!-- 包扫描、只要标注了@Controller、@Service、@Repository,@Component -->
<context:component-scan base-package="com.atguigu" use-default-filters="false"></context:component-scan>
<bean id="person" class="com.atguigu.bean.Person" >
<property name="age" value="#{20-2}"></property>
<property name="name" value="小张三"></property>
<property name="nickName" value="${person.nickName}"></property>
</bean>
四、新建测试类
打印Person对象的值
package com.atguigu.test;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.atguigu.bean.Person;
import com.atguigu.config.MainConfigOfLifeCycle;
import com.atguigu.config.MainConfigOfPropertyValues;
public class IOCTest_PropertyValue {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);
@Test
public void test01(){
printBeans(applicationContext);
System.out.println("=============");
Person person = (Person) applicationContext.getBean("person");
System.out.println(person);
applicationContext.close();
}
//打印spring启动后加载的对象
private void printBeans(AnnotationConfigApplicationContext applicationContext){
String[] definitionNames = applicationContext.getBeanDefinitionNames();
for (String name : definitionNames) {
System.out.println(name);
}
}
}
结果:
说明:获取到了Person对象的值
另:在测试类中test01方法中执行如下片段代码,也可以获取对象的属性值;
即获取当前的上下文的环境变量environment
ConfigurableEnvironment environment = applicationContext.getEnvironment();
String property = environment.getProperty("person.nickName");
System.out.println(property);
applicationContext.close();
======以下于你或许是个好消息======
好消息就是:欢迎访问下面的博客网站哈哈哈......
网站名称:Java学习笔记网 (点击进入)
url:https://www.javaxxbj.com/ (点击进入)
网站特点:
- java主要网站的导航目录
- 你可以记录自己的博客,并可以控制显示和隐藏,可利于管理啦!!!
- 可以添加收藏各个网站的链接!!!
- 甚至也可以文章收藏,点赞,关注,查看我的消息等功能哦!!1
看一小点点的截图:
或可一试哦!