属性赋值

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 +
                '}';
    }
}
View Code
  • 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 +
                '}';
    }
}
View Code
  • 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);

    }

}

猜你喜欢

转载自www.cnblogs.com/xuweiweiwoaini/p/11946302.html