如何在no-arg构造函数中访问Spring bean?

时间:2015-01-29 20:25:41

标签: spring

@Component
public class MyClass {
    public MyClass() {
        SomeInterface something;

        // Spring magic that i don't know

        something.toString();
    }
}

我需要使用什么样的Spring魔法来将豆子注入"某些东西"?

如果它是一个领域,我也不会介意。它必须在构造函数中可用!

1 个答案:

答案 0 :(得分:1)

基本规则也适用于Spring:

  • 构造一个对象,Spring需要调用构造函数
  • 如果尚未构建对象,则Spring无法调用对象的方法或设置其中的一个字段
  • 所以如果你想访问Spring设置的字段,除非将值作为参数传递给构造函数,否则不能从构造函数中执行此操作。

因此有两个选择:

  1. 构造函数注入:

    @Autowired
    public MyClass(SomeInterface something) {
        // use something
    }
    
  2. 构建后的方法,在完成所有注射后调用,无论如何:

    @Autowired
    private SomeInterface something;
    
    @PostConstruct
    private void initialize() {
        // use something
    }