1 @Value注解赋值
1.1 原来的方式
- 示例:
- Person.java
package com.sunxiaping.bean; import java.io.Serializable; public class Person implements Serializable { private String name; private Integer age; 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 + '}'; } }
- applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="person" class="com.sunxiaping.bean.Person"> <property name="name" value="张三"/> <property name="age" value="12"/> </bean> </beans>
- 测试:
package com.sunxiaping.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { @Test public void test() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); String[] names = context.getBeanDefinitionNames(); for (String name : names) { System.out.println(name); } } }
1.2 使用注解的方式
- 示例:
- Person.java
package com.sunxiaping.bean; import org.springframework.beans.factory.annotation.Value; import java.io.Serializable; public class Person implements Serializable { /** * @Value 注解赋值: * ①基本数值 * ②可以写SPELL * ③可以用${}取出配置文件中的值 */ @Value("张三") private String name; @Value(value = "#{20-2}") private Integer age; 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 + '}'; } }
- SpringConfig.java
package com.sunxiaping.config; import com.sunxiaping.bean.Person; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Import(value = {Person.class}) @Configuration //告诉Spring这是一个配置类 public class SpringConfig { }
- 测试:
package com.sunxiaping.test; import com.sunxiaping.bean.Person; import com.sunxiaping.config.SpringConfig; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class SpringTest { @Test public void test() { ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); String[] names = context.getBeanDefinitionNames(); for (String name : names) { System.out.println(name); } Person person = context.getBean(Person.class); System.out.println(person); } }
2 @PropertySource注解
2.1 概述
- 此注解专门用来加载properties文件的。
2.2 原来的方式
- 示例:
- Person.java
package com.sunxiaping.bean; import java.io.Serializable; public class Person implements Serializable { private String name; private Integer age; 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 + '}'; } }
- person.properties
person.name=张三
person.age=12
- applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath*:person.properties"></context:property-placeholder> <bean id="person" class="com.sunxiaping.bean.Person"> <property name="name" value="${person.name}"/> <property name="age" value="${person.age}"/> </bean> </beans>
- 测试:
package com.sunxiaping.test; import com.sunxiaping.bean.Person; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { @Test public void test() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); String[] names = context.getBeanDefinitionNames(); for (String name : names) { System.out.println(name); } Person person = context.getBean(Person.class); System.out.println(person); } }
2.2 使用注解的方式
- 示例:
- person.properties
person.name=张三
person.age=12
- Person.java
package com.sunxiaping.bean; import org.springframework.beans.factory.annotation.Value; import java.io.Serializable; public class Person implements Serializable { @Value("${person.name}") private String name; @Value("${person.age}") private Integer age; 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 + '}'; } }
- SpringConfig.java
package com.sunxiaping.config; import com.sunxiaping.bean.Person; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; @Import(value = {Person.class}) @PropertySource(value = {"classpath:/person.properties"}) @Configuration //告诉Spring这是一个配置类 public class SpringConfig { }
- 测试:
package com.sunxiaping.test; import com.sunxiaping.bean.Person; import com.sunxiaping.config.SpringConfig; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class SpringTest { @Test public void test() { ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); String[] names = context.getBeanDefinitionNames(); for (String name : names) { System.out.println(name); } Person person = context.getBean(Person.class); System.out.println(person); } }