我有一个CustomerRelation
类,它有一个方法getInstance()
和一个实例变量,即
private CustomerCrudService relationshipService = null;
关于getInstance
方法的简要说明
static public CustomerRelation getInstance() {
if (instance == null) {
instance = new customerRelation();//line1
}
return instance;//line2
}
现在我将调试器放在第1行。执行此行后,我看到创建了包含relationshipService的实例 宾语。我的问题是在使用new运算符创建实例时如何注入依赖关系服务?
虽然在MyProject-SpringConfig.xml中我可以看到下面的配置但仍然是我们创建对象时的事件 有了新的操作员,被弹簧核心容器拦截了吗?是因为spring customclassloader。如是 我们在哪里指定这个?
<bean class="com.its.portfolio.relationship.CustomerRelation" scope="prototype">
<property name="relationshipService" ref="relationshipService" />
</bean>
编辑: - 以下是CustomerRelation的代码
package com.its.relationship;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Configurable;
/**
* accessor for customerrelation meta data
*
*/
@Configurable
public class CustomerRelation implements ICustomerRelation {
static private CustomerRelation instance;
private ICustomerRelationshipCrudService relationshipService;
private CustomerRelation() {
}
static public ICustomerRelation getInstance() {
if (instance == null) {
instance = new CustomerRelation();
}
return instance;
}
}
答案 0 :(得分:4)
当我们使用new运算符创建对象时,事件是如何被spring core容器截获的?
这是因为这一点魔力:
@Configurable
如您所料,这会在运行中使用自定义类加载器(以及加载时AOP编织)到inject dependencies into your domain object。
答案 1 :(得分:1)
将@Inject
或@Resourse
注释添加到字段声明中。
@Resourse
private ICustomerRelationshipCrudService relationshipService;
启用@Configurable
支持
并使用AspectJ