Spring注解开发系列Ⅳ --- 属性赋值

在Spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过set方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象、数组、List集合、map集合、Properties等,我们也都有相应的注入方式。其中比较常用的是set注入的方式,下面来看看spring的Set注入的方式。

1.在bean中配置属性(Set方法注入)

该注入方式需要bean(实体类)为属性提供setter方法

xml版:

 <bean id="person" class="com.wang.bean.Person" scope="prototype" >
        <property name="name" value="张三"></property>
        <property name="age" value="18"></property>
    </bean>

注解版:

public class Person {

    /**
     * 使用@Value赋值
     * 1.基本数值
     * 2.可以写SPEL,#{}
     * 3.使用${}获取配置文件中的值
     */
    @Value("zhangsan")
    private String name;
    @Value("#{1+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 +
                '}';
    }
}

 

2.从配置文件中读取Properties

xml版:

  <bean id="student" class="com.wang.bean.Student">
        <property name="id" value="${student.id}" ></property>
        <property name="name" value="${student.name}" ></property>
    </bean>
    <context:property-placeholder location="classpath:person.properties"/>

注解版:

@PropertySource(value = {"classpath:/person.properties"})
@Configuration
public class PropertiesConfig {
    @Bean
    public Person person(){
        return new Person();
    }

    @Bean
    public Student student(){
        return new Student();
    }
}
public class Student {
    @Value("${student.id}")
    private String id;
    @Value("${student.name}")
    private String name;


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

 

posted @ 2018-12-12 15:01  薛定谔病态猫  阅读(373)  评论(0编辑  收藏  举报