Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造函数上的编译时编织和自动连接_Java_Spring_Dependency Injection - Fatal编程技术网

Java 构造函数上的编译时编织和自动连接

Java 构造函数上的编译时编织和自动连接,java,spring,dependency-injection,Java,Spring,Dependency Injection,我使用编译时编织并调用newtestclass(var)。我在构造函数上使用依赖注入,如上面的“otherClass”。它打印出“空”。根据我的测试,依赖项注入“otherClass”无法在构造函数中初始化。我应该怎么做才能允许在“构造函数”上注入依赖项呢?我猜(但不知道100%)自动连线是在对象创建之后发生的。(我的意思是我知道它适用于普通的SpringBean,适用于普通的类,但不适用于@Configurable的100%) 这意味着您不能期望在创建对象时填充自动连接字段allready 如

我使用编译时编织并调用
newtestclass(var)
。我在构造函数上使用依赖注入,如上面的“otherClass”。它打印出“空”。根据我的测试,依赖项注入“otherClass”无法在构造函数中初始化。我应该怎么做才能允许在“构造函数”上注入依赖项呢?

我猜(但不知道100%)自动连线是在对象创建之后发生的。(我的意思是我知道它适用于普通的SpringBean,适用于普通的类,但不适用于@Configurable的100%)

这意味着您不能期望在创建对象时填充自动连接字段allready

如果添加创建后调用的第二个方法printStats,则可以检查这一点

@Configurable
public TestClass(){

@Autowired SomeOtherClass otherClass;

public TestClass(Var1 var){

System.out.println(otherClass);

}


}
我猜(但不知道100%)自动连线发生在对象创建之后。(我的意思是我知道它适用于普通的SpringBean,适用于普通的类,但不适用于@Configurable的100%)

这意味着您不能期望在创建对象时填充自动连接字段allready

如果添加创建后调用的第二个方法printStats,则可以检查这一点

@Configurable
public TestClass(){

@Autowired SomeOtherClass otherClass;

public TestClass(Var1 var){

System.out.println(otherClass);

}


}

支持拉尔夫的回答

来自Spring文档

字段在构造bean之后,在调用任何配置方法之前被注入


支持拉尔夫的回答

来自Spring文档

字段在构造bean之后,在调用任何配置方法之前被注入

HTH

请查看Spring文档部分中的注释

它显示了
@Configurable
属性,用于在构造函数中的代码之前强制注入

public class TestClass {
  ...
   public void printStats(){
     System.out.println(otherClass);
   }
}

...
new TestClass(var).printStats();
将该属性添加到上面的代码将停止
System.out.println(otherClass)
null

查看Spring文档中的注释部分

它显示了
@Configurable
属性,用于在构造函数中的代码之前强制注入

public class TestClass {
  ...
   public void printStats(){
     System.out.println(otherClass);
   }
}

...
new TestClass(var).printStats();

将该属性添加到上面的代码将停止
System.out.println(otherClass)
null开始

是的,我意识到不能像你提到的那样在ConstructUCTR中使用autowired=)所以,想知道有什么解决方法吗?有一个特殊的原因,你需要在构造过程中采取行动,你想为其他类设置属性或调用方法吗?是的,我意识到不能像你提到的那样在ConstructUCTR中使用autowired=)所以,想知道在构建过程中需要采取哪些措施,是否需要为otherClass设置属性或调用方法?