上面是与生命周期有关的内容,下面是属性赋值相关的:
@Configuration public class ProperTyValueConfig { @Bean public Person person() { return new Person(); } }
测试:
public class test { private void printBeans(AnnotationConfigApplicationContext applicationContext) { String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames(); for(String name : beanDefinitionNames) { System.out.println(name); } Object p = applicationContext.getBean("person"); System.out.println(p); } @Test public void test01(){ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ProperTyValueConfig.class); System.out.println("容器创建完成"); printBeans(applicationContext); //关闭容器 applicationContext.close(); } }
看看容器有哪些Bean
除了容器自带的,还有就是我们配置的person,还没有赋值哦
xml:
<baen id = "person" class = "com.toov5.Person">
<property name = "age" value= 12> </property>
<property name="name" value = "jack"> </property>
扫描二维码关注公众号,回复:
5794784 查看本文章
</bean>
注解:
@Value() boolean
Spel 基本数值都可以写 #{}
${} 取出配置文件中的值 在运行环境中的变量值
Bean类及其赋值:
package com.toov5.Bean; import org.springframework.beans.factory.annotation.Value; public class Person { @Value("#{20-1}") int age; @Value("MaYun") String name; public Person() { // TODO Auto-generated constructor stub } public Person(int age, String name) { super(); this.age = age; this.name = name; } @Override public String toString() { return "Person [age=" + age + ", name=" + name + "]"; } }
注意赋值 @Value 类型要匹配
下面介绍使用properties文件的:
如果用xml形式的读取:
xml中需要有命名空间: <context: property-placeholder location=“xxxxxx/xxx” /> 用其导入外部的配置文件
如果用注解的方式读取:
Bean类:
public class Person { @Value("#{20-1}") int age; @Value("MaYun") String name; @Value("${person.addr}") String addr; public Person() { // TODO Auto-generated constructor stub } public Person(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @Override public String toString() { return "Person [age=" + age + ", name=" + name + ", addr=" + addr + "]"; } }
properties:
person.addr=beijing
测试:
public class test { private void printBeans(AnnotationConfigApplicationContext applicationContext) { String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames(); for(String name : beanDefinitionNames) { System.out.println(name); } Object p = applicationContext.getBean("person"); System.out.println(p); } @Test public void test01(){ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ProperTyValueConfig.class); System.out.println("容器创建完成"); printBeans(applicationContext); //关闭容器 applicationContext.close(); } }
一旦properties文件被加载,还可以使用如下方式获取:
public class test { private void printBeans(AnnotationConfigApplicationContext applicationContext) { String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames(); for(String name : beanDefinitionNames) { System.out.println(name); } Object p = applicationContext.getBean("person"); System.out.println(p); //运行时环境变量 ConfigurableEnvironment environment = applicationContext.getEnvironment(); String property = environment.getProperty("person.addr"); System.out.println(property); } @Test public void test01(){ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ProperTyValueConfig.class); System.out.println("容器创建完成"); printBeans(applicationContext); //关闭容器 applicationContext.close(); } }