Spring注解(七) @Value

253 阅读1分钟

@Value

普通写法

  • 给组件的属性注入值 使用
@Component
public class Car {
    @Value("3")
    private int id;
    @Value("alex")
    private String name;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

测试

public class SpringAnnotationTest1 {
    static AnnotationConfigApplicationContext ioc = new AnnotationConfigApplicationContext(Car.class);
    static void printBeans() {
        String[] beans = ioc.getBeanDefinitionNames();
        for (String bean : beans) {
            System.out.println(bean);
        }
    }
    @Test
    public void test1() {
        printBeans();
        Car car = ioc.getBean(Car.class);
        System.out.println(car.getId());
    }
}

结果

car
3

小结: 之前误认为, ioc容器new对象的时候要传入一个配置类, 其实随便传入什么组件都可以, 它只是意味着给IOC容器的第一个组件而已.

SpEl写法

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

取配置文件写法

将配置文件写入环境变量, 注意放入了环境变量中, 也可以从环境变量中取

@PropertySource("classpath:application.properties")
@Configuration
public class Banana {
    @Value("${banana.name}")
    private String name;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 取出
  @Test
  public void test2() {
      printBeans();
      Banana banana = ioc.getBean(Banana.class);
      System.out.println(banana.getName());
  }