springboot组件注入属性的两种方式

@Value注入

需要一个一个的标注在属性或方法上面,一一对应。通常格式是注解 + SpEL 表达式,如 @Value("SpEL 表达式")

@Component
public class Book {

    @Value("${Book.name}")
    private String name;

    @Value("${Book.writer}")
    private String writer;

    public String getName() {
        return name;
    }

    public String getWriter() {
        return writer;
    }
}

特点:

  1. 注入的属性必须在配置文件中有,没有则会报错。
  2. 只能注入基本数据类型,不能注入复杂数据类型和其他组件类型。
  3. 不需要写Setter方法。
  4. 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,建议使用@Value。

@ConfigurationProperties注入

只需要在组件上方一条注解@ConfigurationProperties(prefix="")即可注入属性,其中prefix中的值是属性的参数名称,比如prefix="Book"将会匹配所有Book:下的属性。

@Component
@ConfigurationProperties(prefix = "Book")
public class Book {

    private String name;

    private String writer;

    public String getName() {
        return name;
    }

    public String getWriter() {
        return writer;
    }

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

    public void setWriter(String writer) {
        this.writer = writer;
    }
}
Book:
  name: pipilu
  writer: Zheng Yuanjie

特点:

  1. 必须要有Setter方法,否则无法注入
  2. 可以注入复杂数据类型和其他组件类型。
  3. 如果说,我们专门编写了一个javaBean组件来和配置文件进行映射,我们就直接使用@ConfigurationProperties
# Java  spring 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×