Spring注解开发03--------属性赋值与自动装配

属性赋值

概述

在Spring中,我们可以使用@Value来为我们的属性赋值。
使用@Value赋值,可以:

  1. 基本参数
  2. 可以写Spel表达式:#{}
  3. 可以使用${},取出配置文件(.properties)中的值(即运行环境中的值)

测试

1.编写配置文件person.properties,配置文件中设置人物的昵称
person.nickName=张三蛋
2.编写person类:

package com.xdw.pojo;

import org.springframework.beans.factory.annotation.Value;

public class Person {

    // 使用@Value赋值:
    // 1.基本参数
    // 2.可以写SpEl: #{}
    // 3.可以写${}; 取出配置文件中【properties】的值(在运行环境变量里的值)

    @Value("张三")
    private String name;

    @Value("#{20-2*3}")
    private Integer age;

    @Value("${person.nickName}")
    private String nickName;

    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 +
                ", nickName='" + nickName + '\'' +
                '}';
    }
}

3.编写配置类

package com.xdw.config;

import com.xdw.pojo.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
// @PropertySource将指定路径下的配置文件加载进程序运行环境中
@PropertySource(value="classpath:person.properties")
@Configuration
public class MainConfigOfValueProperty {

    @Bean
    public Person person() {
        return new Person();
    }

}

4.编写测试类

import com.xdw.config.MainConfigOfValueProperty;
import com.xdw.pojo.Person;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class TestProperty {
    @Test
    public void test01() {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfValueProperty.class);
        Person person = (Person)applicationContext.getBean("person");
        System.out.println(person);
    }
}

5.运行测试
Spring注解开发03--------属性赋值与自动装配

总结

@Value注解有以下三种使方式:

  1. 基本参数
  2. 可以写Spel表达式:#{}
  3. 可以使用${},取出配置文件(.properties)中的值(即运行环境中的值)
  4. 我们可以使用@PropertySource注解来将我们的配置文件加载到运行环境中

自动装配

概述

自动装配: Spring利用依赖注入(DI),完成对IOC容器中各个组件依赖关系赋值

方式一:Spring自带注解@Autowried

  1. 该注解默认优先按照类型去容器中找到对应组件,找到就直接赋值
  2. 如果找到多个相同类型的组件,就将属性的名称作为组件的id去容器中查找
  3. 可以使用@Qualifier注解来指定需要装配的组件的id
  4. 自动装配默认一定要将组件装配好,否则就会报错!可以使用@Autowired(required = false)修改这一默认配置
  5. @Primary注解,放在bean或者创建bean的方法上,让Spring进行默认装配的时候,首选!

方式二:@Resource(JSR250)和@Inject(JSR330)[java规范的注解]

@Resource:

  1. 可以和@Autowried一样,实现自动装配功能:默认是按照组件名称进行装配的
  2. 没有支持@Primary注解功能,也没有@Autowired(required = false)这一配置

@Inject:

  1. 需要导入javax.inject依赖,和@Autowried功能一样,但是没有required=false的功能
<!-- 支持JSR330规范 -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

自动装配使用起来比较简单,在这里就不测试了,大家可以参考文档自行测试!

上一篇:C# Distinct去重泛型List


下一篇:The Golden Age of Compiler Design in an Era of HW/SW Co-design