Spring DI - 不初始化所有依赖bean

Kan*_*ath 6 java spring inversion-of-control

我有一个ServiceA,它依赖于ServiceB.serviceB来自一个带有lazy-init = true的spring bean文件,也就是说,我只想在我要求那个bean的时候初始化serviceB.

但是我在整个应用程序中使用ServiceA,当我们进行基于setter的注入时,ServiceB会被初始化.

我希望ServiceA 在ServiceA中调用需要ServiceB的任何方法之前不初始化ServiceB.一种方法是使用Aspects,但我正在寻找最简单的解决方案,特别是在serviceB的spring xml文件或serviceB或任何代理标志中的一些注释.

有人可以帮忙吗?

Tom*_*icz 6

我想LazyInitTargetSource你需要做什么.

在初始化时需要代理引用但在第一次使用之前不应初始化实际目标对象时很有用.当目标bean在ApplicationContext(或急切实例化单例bean的BeanFactory)中定义时,它也必须标记为"lazy-init",否则它将在启动时由所述ApplicationContext(或BeanFactory)实例化.