【发布时间】:2021-03-17 20:05:13
【问题描述】:
据我了解,Spring 在postProcessBeforeInitialization 阶段使用AutowiredAnnotationBeanPostProcessor 管理自动装配机制。但是它如何注入应该在postProcessAfterInitialization 阶段创建的代理呢?
编辑 1
假设我有这个 Spring 配置
@Service
class RegularBean {
// injected on postProcessBeforeInitialization stage
@Autowired
private TransactionBean tBean;
// invoked in between of postProcessBeforeInitialization and postProcessAfterInitialization
@PostConstruct
void init() {
tBean.transactionMethod();
}
}
@Service
class TransactionBean {
// transactional proxy is created on postProcessAfterInitialization stage
@Transactional
public void transactionMethod() { ... }
}
事务代理在postProcessAfterInitialization 阶段创建。但是@PostConstruct 在它之前被调用。注入的tBean 是用事务代理包裹的吗?如果是这样,那为什么?因为不应该。如果不包装,那么以后的交易怎么处理?
假设我将字段注入替换为构造函数注入。它会以某种方式改变行为吗?
【问题讨论】:
标签: spring spring-mvc dependency-injection spring-aop